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

Comprar String con Interfaz comparable

Estas en el tema de Comprar String con Interfaz comparable en el foro de Java en Foros del Web. Buenos días ! No se si el título es correcto del todo pero ahora hemos empezado con las colecciones en Java y tengo un problema. ...
  #1 (permalink)  
Antiguo 08/12/2014, 09:16
 
Fecha de Ingreso: noviembre-2010
Mensajes: 156
Antigüedad: 13 años, 4 meses
Puntos: 0
Comprar String con Interfaz comparable

Buenos días ! No se si el título es correcto del todo pero ahora hemos empezado con las colecciones en Java y tengo un problema.

Tengo el siguiente Método compareTo que implementa la interfaz Comparable , Entonces me ordena por puntos y luego si los puntos son iguales me ordena por nombre.

El problema viene cuando intento ordenar con un String , no por Enteros. Vamos que quiero ordenar por apellidos y no por la cantidad de puntos para entendernos XD

Código Java:
Ver original
  1. @Override
  2.     public int compareTo(Object obj) {
  3.         Jugador j = (Jugador) obj;
  4.  
  5.         if (this.puntos > j.puntos) {
  6.             return -1;
  7.         } else if (this.puntos < j.puntos) {
  8.             return 1;
  9.         } // else return 0;
  10.         else {
  11.             return this.getNombre().compareTo(j.getNombre());
  12.         }
  13.  
  14.     }
  #2 (permalink)  
Antiguo 09/12/2014, 02:41
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Comprar String con Interfaz comparable

Yo por lo menos no te he entendido.

Ordenar por apellidos es igual que ordenar por nombre, que ya estás haciendo.

Si lo que quieres es tener varias formas de ordenar, como sólo puede haber un método compareTo, tienes que buscar otra solución, por ejemplo usar Comparator.

http://examples.javacodegeeks.com/co...rator-example/
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 10/12/2014, 15:58
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Comprar String con Interfaz comparable

O sea que en lugar de ordenar por puntos quieres ordenar por solo el Apellido independientemente de que puntos tenga? Como un "Sort" y ya?, pues es un método totalmente diferente.. si es que te entendí...
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar
  #4 (permalink)  
Antiguo 10/12/2014, 16:07
Avatar de Monimo  
Fecha de Ingreso: noviembre-2007
Ubicación: Mexico Df
Mensajes: 742
Antigüedad: 16 años, 5 meses
Puntos: 69
Respuesta: Comprar String con Interfaz comparable

Cita:
Iniciado por Monimo Ver Mensaje
O sea que en lugar de ordenar por puntos quieres ordenar por solo el Apellido independientemente de que puntos tenga? Como un "Sort" y ya?, pues es un método totalmente diferente.. si es que te entendí...

Código:
 public Jugador(String nombre, int puntos) {
      this.nombre = nombre;
      this.puntos = puntos;
    }
  

  public static class JugadorComparador implements Comparador<Jugador> {
      @Override
      public int compare(Jugador j, Jugador  t) {
         int h = j.nombre.compareTo(t.nombre);
         return (h != 0) ? h : j.puntos.compareTo(t.puntos);
      }
  }

 
//con tu coleccion
    Collections.sort(l, new JugadorComparador());

    
    for(Jugador j : l) {
      System.out.println(j.nombre + " " + j.puntos);
    }
__________________
La verdad es que lo que no quisiera dejar de hacer nunca (a parte de comer) es programar

Etiquetas: interfaz, string
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 12:07.