2011-03-18 29 views
7

Tengo una tarea en la que necesito crear un arraylist de objetos BookInventory con params (String bookNum, String bookTitle, int qoh, double bookPrice). Donde bookNum es el número de ISBN con guiones de un libro. Después de crear esta matriz, necesito usar el método de clasificación de la clase Colecciones. En mi clase BookInventory class, necesito escribir un compareTo() que termine ordenando el arraylist por bookNum (que es un String). ¿Cómo hago esto? Esta es mi primera experiencia con esto, y no entiendo.escribiendo un método público int compareTo() java

Respuesta

16

Esto debería empezar:

public class BookInventory implements Comparable<BookInventory> { 

    // code 

    public int compareTo(BookInventory other){ 
    return bookTitle.compareTo(other.bookTitle); 
    } 

    //code 
} 

Lo que hay que sacar de este es implementar Comparable para que pueda implementar su propio método personalizado compareTo thats de llama automáticamente al ordenar un ArrayList.

Para leer más sobre compareTo y pedidos, echa un vistazo a esto:

http://download.oracle.com/javase/tutorial/collections/interfaces/order.html

+0

nota rápida para cualquiera que lea que a diferencia de los iguales de primer orden, la entrada el parámetro aquí NO debe ser del tipo Object. – anon58192932

1

Si nos fijamos un documentation for the Collections la clase, verá que implementa dos sort mwethods. Se toma cualquier tipo de List junto con un objeto Comparator para comparar elementos de la lista. El otro toma un List de cualquier tipo de objeto que implemente Comparable. Dado que compareTo está definido por Comparable (mientras que Comparator debe implementar compare), eso le indica que su clase debe declararse como implements Comparable<BookInventory>, lo que significa que debe tener un método compareTo. Vea el documentation for Comparable.compareTo(T) para lo que su método debe hacer. Encontrará que el método StringcompareTo(String) es útil.

1

El método compareTo() se utiliza para comparar dos objetos que tienen propiedades múltiples. Devolverá un número entero para indicar cuál de los objetos que se comparó es más grande. Tiene más sentido si los objetos que se comparan tienen propiedades que tienen un orden natural.

Valor de retorno:

  • menos de 0 -> indica que el objeto está delante de la aprobada en objeto.
  • más de 0 -> el objeto es después de que el objeto pasado
  • igual a 0 -> los dos objetos se encuentran a mismo nivel
+1

"igual a 9" -> "igual a 0" –

+0

oops my bad. Dedos gordos escribiendo. la última opción se supone que es "igual a 0". @Paul Bendición. Gracias –

Cuestiones relacionadas