Java - Ordenar lista en general

   
Vista:

Ordenar lista en general

Publicado por Yael (5 intervenciones) el 21/02/2009 10:14:14
Como puedo generalizar un metodos de ordenamiento para que pueda declarar un alista de cualquier tipo de dato:
Se supone un metodo organizar numeros es este:

static void ordenar ( Object lista[] ) {
for( int i=0 ; i<lista.length ; i++ )
for( int j=lista.length-1 ; j>i ; j-- )
if( compare(lista[j],lista[j-1]))
intercambiar( lista, j, j-1 );
}

Me dejaron un trabajo donde me piden
Generalizar la función ordenar para que ordene elementos de cualquier tipo sobre los que tenga sentido definir una relación de orden. Para ello, introducir una mínima modificación en las líneas 1 y 4, y definir las clases y/o interfaces adicionales que sean necesarias.

Ojala me puedan ayudar
Un saludos a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ordenar lista en general

Publicado por Rene Gonzalez (115 intervenciones) el 21/02/2009 18:33:48
Es algo simil a la clase Arrays, especificamente, su metodo estatico sort().

static void ordenar ( Object lista[], Comparador c) {
for( int i=0 ; i<lista.length ; i++ )
for( int j=lista.length-1 ; j>i ; j-- )
if( c.compare(lista[j],lista[j-1]) ){
intercambiar( lista, j, j-1 );
}
}
}
}

public interface Comparador {
public boolean compare(Object o1, Object o2);
}

Esta es una de las formas. La otra es que tus objetos sean comparables, o sea implementen una interfaz que permita comparar unos con otros. De esta forma tu metodo quedaria

static void ordenar ( Comparable[] lista) {
for( int i=0 ; i<lista.length ; i++ )
for( int j=lista.length-1 ; j>i ; j-- )
if( lista[j].compare(lista[j-1]) ) ){
intercambiar( lista, j, j-1 );
}
}
}
}

public interface Comparable{
public boolean compare(Object o1);
}

Siento que se me olvida algo ... bueno, basicamente es eso. Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ordenar lista en general

Publicado por puta.hostia (69 intervenciones) el 23/02/2009 14:34:03
Hola a todos.

Mas fácil todavia - en java5 teneis la clase Collections con su método estático sort. Acepta como argumento un objeto List. Si el parámetro no implementa List, abrid el código fuente del método sort y ... a picarse un clase. Yo he tenido que hacerlo y mas todavia cuando se trabaja con java 1.4.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar