使用 lambda 函数对数组列表进行排序不起作用
Sorting an arraylist with lambda function isn't working
我正在尝试将 .sort()
方法与 arraylist
结合使用。
我的方法 public void sortSurname()
应该 按姓氏 的字母顺序对所有对象进行排序,这些对象包含在数组列表 ArrayList<Contact> contacts
.
中
有人可以找到此代码的问题吗?
以下是我到目前为止所写的内容:
联系 class
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;
}
}
红字class
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);
}
}
感谢您的帮助。
问题是 {}
是一个块,需要 return。像这样尝试:
contacts.sort((Contact c1, Contact c2) -> {
return c1.getSurname().compareTo(c2.getSurname());
});
或者忘记 {}
而只做
contacts.sort((Contact c1, Contact c2) ->
c1.getSurname().compareTo(c2.getSurname()));
或使用 Comparator 接口并传递方法引用。
contacts.sort(Comparator.comparing(Contact::getSurname));
去掉 { }
public void sortSurname(){
contacts.sort((Contact c1, Contact c2) ->
c1.getSurname().compareTo(c2.getSurname());
);
}
我正在尝试将 .sort()
方法与 arraylist
结合使用。
我的方法 public void sortSurname()
应该 按姓氏 的字母顺序对所有对象进行排序,这些对象包含在数组列表 ArrayList<Contact> contacts
.
中
有人可以找到此代码的问题吗?
以下是我到目前为止所写的内容:
联系 class
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;
}
}
红字class
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);
}
}
感谢您的帮助。
问题是 {}
是一个块,需要 return。像这样尝试:
contacts.sort((Contact c1, Contact c2) -> {
return c1.getSurname().compareTo(c2.getSurname());
});
或者忘记 {}
而只做
contacts.sort((Contact c1, Contact c2) ->
c1.getSurname().compareTo(c2.getSurname()));
或使用 Comparator 接口并传递方法引用。
contacts.sort(Comparator.comparing(Contact::getSurname));
去掉 { }
public void sortSurname(){
contacts.sort((Contact c1, Contact c2) ->
c1.getSurname().compareTo(c2.getSurname());
);
}