Ordenar una lista de acuerdo a un dato miembro

Iniciado por nico56, 19 Julio 2010, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

nico56

Hola que tal, tengo un arraylist de objetos, estos objetos tienen dos datos miembro , nombre(string) y puntos(int), hay algun metodo que ordene de mayor a menor la lista con respecto a los puntos ? Desde ya gracias y saludos.

sapito169

#1
en primer lugar la lista de objetos tienen que ser treeset no un (arraylist ni un vector ni tampoco un array) y en segundo lugar el objeto tiene que inplementar conparable
y java ase toda la magia  ;D

https://sites.google.com/site/apuntesdejava/Home/comparator-y-comparable

otra opcion es recorrer la lista y ordenarla conosido como metodos de ordenacion en mi opinion solo es para practicar y para tenerlo como cultura general por que el api colecion de java ya te ase todo el trabajo (no reinventes la rueda especialmente cuando estas en produccion) aparte hay un monton de librerias que te pueden ordenar listas

algunos metodos de ordenacion son

burbuja
quiksort

todos estan en wikipedia
por que no lo investigaste primero

nico56

Nada mas decime el nombre del metodo para ordenar el arrayList :S en base a ese atributo (puntos)

Leyer

#3
Tendrás que usar la lógica para hacerlo por que el arraylist no es posible solo con el list, yo hice un método para ordenarlo como dices pero no es la gran cosa :xD :xD

Un saludo.

nico56

Osea no hay un metodo -.-, me las tengo q arreglar solo devuelta

sapito169

#5
CitarNada mas decime el nombre del metodo para ordenar el arrayList :S en base a ese atributo (puntos)

el metodo es sort de la clase colections



import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Application {
  public Application(){
     
  }
  public void comiensa(){
    List misArticulos= Arrays.asList(new Articulo("Conputadora",2),
    new Articulo("raton",1),
    new Articulo("parlante",5));
    Collections.sort(misArticulos,new Comparator(){
                   public int compare(Object a, Object b) {
                       int codigoPrimero = ((Articulo)a).getCodigo();
                       int codigoSegundo=((Articulo)b).getCodigo();
                       int respuesta=0;
                       if(codigoPrimero<codigoSegundo){
                           respuesta=-1;
                       }
                       if(codigoPrimero>codigoSegundo){
                           respuesta=+1;
                       }
                       
                       return respuesta;
                   }
               });
      System.out.print(misArticulos);        
  }
 
  public static void main (String arg[]){
       new Application().comiensa();
   }
}

Debci

Cita de: nico56 en 19 Julio 2010, 23:43 PM
Hola que tal, tengo un arraylist de objetos, estos objetos tienen dos datos miembro , nombre(string) y puntos(int), hay algun metodo que ordene de mayor a menor la lista con respecto a los puntos ? Desde ya gracias y saludos.
while iterativo e ir ordenando para re-colocarlos?

Saludos