Foros del Web » Programación para mayores de 30 ;) » Java »

como puedo ordenar un arreglo en Java

Estas en el tema de como puedo ordenar un arreglo en Java en el foro de Java en Foros del Web. Hola a todos, en esta oportunidad me dirijo a ustedes para que me ayuden a con el siguiente tema. Realice una sentencia SELECT, el resultado ...
  #1 (permalink)  
Antiguo 22/02/2012, 16:53
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 3
Pregunta como puedo ordenar un arreglo en Java

Hola a todos, en esta oportunidad me dirijo a ustedes para que me ayuden a con el siguiente tema.
Realice una sentencia SELECT, el resultado de esta sentencia lo guardo en un vebtor, pero resulta que en este arreglo algunos campos tiene asignado el valor de vacio, o sea, cero. Lo que quiero es ordenar el vector obtenido en la sentencia SELECT para que los valores ceros queden de ultimo.
Por ejemplo:

VECTOR 1 = 0 1 2 0 3 0 1 4
VECTOR 2 = 1 2 3 1 4 0 0 0

Aqui les coloco un fragmento de mi codigo en JAVA:

sSQL = "SELECT num_rif,item_1,item_2,item_3,item_4,item_5,item_6, item_7,item_8 FROM cartelera_tiene WHERE num_rif= RIF and fecha= fecha";

try {
Statement st = cn.createStatement();
ResultSet rs= st.executeQuery(sSQL);
while (rs.next()){
registro[0] = rs.getString("num_rif");
registro[1] = rs.getString("fecha");
registro[2] = rs.getString("item_1");
registro[3] = rs.getString("item_2");
registro[4] = rs.getString("item_3");
registro[5] = rs.getString("item_4");
registro[6] = rs.getString("item_5");
registro[7] = rs.getString("item_6");
registro[8] = rs.getString("item_7");
registro[9] = rs.getString("item_8");

}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}

Gracias
  #2 (permalink)  
Antiguo 23/02/2012, 02:12
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: como puedo ordenar un arreglo en Java

Si no te importa el orden de los demás elementos, puedes hacer el select de forma que te los devuelva ya ordenados de forma que el 0 (si es el valor más pequeño) quede al final

select ..... order by elcampoquesea desc;

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 23/02/2012, 09:02
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: como puedo ordenar un arreglo en Java

Gracias por lo que me dices, pero no me funciona porque mi la tabla tiene los siguientes campos:

CREATE TABLE `cartelera_tiene` (
`num_rif` varchar(10) NOT NULL,
`fecha` date NOT NULL,
`item_1` int(1) default NULL,
`item_2` int(1) default NULL,
`item_3` int(1) default NULL,
`item_4` int(1) default NULL,
`item_5` int(1) default NULL,
`item_6` int(1) default NULL,
`item_7` int(1) default NULL,
`item_8` int(1) default NULL,
PRIMARY KEY (`num_rif`,`fecha`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `cartelera_tiene` */

insert into `cartelera_tiene`(`num_rif`,`fecha`,`item_1`,`item _2`,`item_3`,`item_4`,`item_5`,`item_6`,`item_7`,` item_8`) values ('J111111111','2012-02-16',0,0,0,0,5,6,7,8);

Y ademas, tengo otra tabla primaria llamada cartelera y es la siguiente:

CREATE TABLE `cartelera` (
`id_cartelera` int(2) NOT NULL,
`descripsion` varchar(100) NOT NULL default '',
PRIMARY KEY (`id_cartelera`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/*Data for the table `cartelera` */

insert into `cartelera`(`id_cartelera`,`descripsion`) values (0,''),(1,'Fotocopia del RIF'),(2,'Última declaración del ISLR'),(3,'Patente Municipal'),(4,'Solvencia de Aseo.'),(5,'NIL - MINTRA'),(6,'INCES - Solvencia'),(7,'MINTRA - Solvencia Laboral'),(8,'Última declaración del IVA.');

entonces lo que quiero hacer es lo siguiente:
1. Ordenar ese arreglo y llenar un temporal para que cuando me toque hacer el reporte se me haga mas facil, llamado solo a este temporal.
2. El temporal tiene que comparar cada campo: por ejemplo:
si cartelera_tiene.item_1 es igual a 1 entonces voy a la tabla cartelera y busco en id_cartelera el campo descripsion, y este es el que voy a almacenar en el temp.
3. Es por eso que quiero dejar los valores ceros de ultimo, para que estos campos vacios no me salgan en el reporte.

Espero haberme explicado bien, o si tienes otra manera en como lo puedo hacer

¡¡¡ Te lo agradecería!!!

Última edición por venezolana32; 23/02/2012 a las 09:10
  #4 (permalink)  
Antiguo 23/02/2012, 09:11
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: como puedo ordenar un arreglo en Java

Aqui les dejo lo que he intentado hacer en JAVA, haber si me pueden decir donde tengo el error, GRACIAS!!!
String sSQL= "";
ConexionMysql2 mysql = new ConexionMysql2();
Connection cn = mysql.Conectar();
sSQL = "SELECT num_rif,item_1,item_2,item_3,item_4,item_5,item_6, item_7,item_8 FROM cartelera_tiene " +
"WHERE num_rif= 'RIF' and fecha= 'fecha'";

try {
Statement st = cn.createStatement();
ResultSet rs= st.executeQuery(sSQL);
while (rs.next()){
registro[0] = rs.getString("num_rif");
registro[1] = rs.getString("fecha");
registro[2] = rs.getString("item_1");
registro[3] = rs.getString("item_2");
registro[4] = rs.getString("item_3");
registro[5] = rs.getString("item_4");
registro[6] = rs.getString("item_5");
registro[7] = rs.getString("item_6");
registro[8] = rs.getString("item_7");
registro[9] = rs.getString("item_8");

}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
String SSQL= "";
String [] registro2 = new String [2];// datos de la cartelera fiscal
String [] registro3 = new String [9];

int j = 0;
for (int i=2; i <= 8 ;i++){
String id = registro [i];
SSQL = "SELECT * FROM cartelera WHERE id_cartelera= 'id' ";
try {
Statement st = cn.createStatement();
ResultSet rst = st.executeQuery(SSQL); //En este objeto rs estan los datos de i consulta
while (rst .next()){
registro2[0] = rst.getString("id_cartelera");
registro2[1] = rst.getString("descripsion");
}
if (registro2[1]!=" ") {
registro3[j] = registro2[1];
++j;
}
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
String sSqL= "";
String mensaje ="";
sSqL = "INSERT INTO temp (num_rif,fecha,item_1,item_2,item_3,item_4,item_5, item_6,item_7,item_8)VALUES(?,?,?,?,?,?,?,?,?)";
mensaje = "Los datos se han insertado de manera sastifactoria...";
try {
PreparedStatement pst = cn.prepareStatement(sSqL);
pst.setString(1, registro[0]);
pst.setString (2, registro[1]);
pst.setString (3, registro3[2]);
pst.setString (4,registro3[3]);
pst.setString (5, registro3[4]);
pst.setString (6, registro3[5]);
pst.setString (7,registro3[6]);
pst.setString (8, registro3[7]);
pst.setString (9, registro3[8]);
int n = pst.executeUpdate();
if (n > 0)
{
JOptionPane.showMessageDialog(null, mensaje);
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null,ex);
}

}
  #5 (permalink)  
Antiguo 23/02/2012, 09:31
 
Fecha de Ingreso: agosto-2011
Ubicación: Madrid
Mensajes: 185
Antigüedad: 13 años, 2 meses
Puntos: 29
Respuesta: como puedo ordenar un arreglo en Java

Podrías manejar el criterio de ordenación implementando Comparable o un Comparator. Si es la implementación de Comparable, como tienes que devolver 0, -1 o 1, si el valor del objeto es 0 devuelves 1 (para indicar que el número siempre será mayor que el otro, y lo vaya metiendo a la derecha). Si no es 0 haces una comparación normal.

Aquí hay un ejemplo por si quieres necesitas refrescarte la memoria:
https://sites.google.com/site/apunte...r-y-comparable
  #6 (permalink)  
Antiguo 23/02/2012, 22:30
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: como puedo ordenar un arreglo en Java

Sabes que ? me estoy dando cuenta que la sentencia SELECT debe de ir asi:

sSQL = "SELECT num_rif,fecha,item_1,item_2,item_3,item_4,item_5,i tem_6,item_7,item_8 FROM cartelera_tiene " +
" WHERE num_rif = '" +RIF+ "'AND fecha = " +Fecha+ " ";

pero lo que no entiendo es porque las clases Statement y ResultSet no me da ningun valor si los demás select funcionan bien. Que estara pasando????
  #7 (permalink)  
Antiguo 24/02/2012, 05:25
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 11 meses
Puntos: 41
Respuesta: como puedo ordenar un arreglo en Java

como te dijo chuidiang es la forma correcta, YA QUE POR DEFECTO en la mayoría de las bases de datos, cuando se utiliza un criterio de agrupación u orden, y los valores de esas columnas son null van al final, y de esta manera estarías quedaría exactamente como querés...
__________________
BadProgrammerException!

Etiquetas: string, arreglos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:08.