我正在尝试使用.sort()
方法 arraylist
.
我的方法public void sortSurname()
应该按姓氏字母顺序对所有对象进行排序,这些对象包含在数组列表 ArrayList<Contact> contacts
中.
有人可以找到此代码的问题吗?
这是我到目前为止所写的内容:
接触类
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;
}
}
红字类别
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);
}
}
主要
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);
}
}
感谢您的帮助。
最佳答案
问题是 {}
是一个 block 并且需要返回。尝试这样:
contacts.sort((Contact c1, Contact c2) -> {
return c1.getSurname().compareTo(c2.getSurname());
});
或者忘记{}
,直接执行
contacts.sort((Contact c1, Contact c2) ->
c1.getSurname().compareTo(c2.getSurname()));
或使用Comparator接口(interface)并传递方法引用。
contacts.sort(Comparator.comparing(Contact::getSurname));
关于java - 使用 lambda 函数对数组列表进行排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71809662/