Estoy tratando de usar el método arraylist .sort() con una lista de arreglos.
Mi método public void sortSurname() debería ordenar alfabéticamente todos los objetos por su apellido , estos objetos están contenidos en una lista de arreglos ArrayList<Contact> contacts .
¿Podría alguien encontrar el problema con este código?
Esto es lo que he escrito hasta ahora:
Clase de contacto
package main; public class Contact { private String name, surname, cellphone; private Genere genere; public Contact(String name, String surname, String cellphone){ this.name=name; this.surname=surname; this.cellphone=cellphone; } public String getSurname() { return surname; } }clase rubrica
public class Rubrica { private ArrayList<Contact> contacts; public Rubrica(){ contacts = new ArrayList<>(); } public void sortSurname(){ contacts.sort((Contact c1, Contact c2) -> { c1.getSurname().compareTo(c2.getSurname()); }); } public void addContact(Contact c1){ contacts.add(c1); } }Principal
package main; public class Main { public static void main(String[] args) { Contact c1 = new Contact("Paolo", "Groviera", "338"); Contact c2 = new Contact("Paolo", "Groviera", "234"); Contact c3 = new Contact("Lampa", "Dino", "234"); Contact c4 = new Contact("Lampa", "Dina", "0234"); Rubrica r = new Rubrica(); r.addContact(c1); r.addContact(c2); r.addContact(c3); r.addContact(c4); r.sortSurname(); System.out.println(r); } }Gracias por la ayuda.
El problema es el {} que es un bloque y requiere un retorno. Pruébalo así:
contacts.sort((Contact c1, Contact c2) -> { return c1.getSurname().compareTo(c2.getSurname()); }); u olvidar el {} y simplemente hacer
contacts.sort((Contact c1, Contact c2) -> c1.getSurname().compareTo(c2.getSurname()));o use la interfaz Comparator y pase una referencia de método.
contacts.sort(Comparator.comparing(Contact::getSurname));Deshacerse de { }
public void sortSurname(){ contacts.sort((Contact c1, Contact c2) -> c1.getSurname().compareTo(c2.getSurname()); ); }