java - 使用 lambda 函数对数组列表进行排序不起作用

标签 java sorting oop arraylist lambda

我正在尝试使用.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/

相关文章:

javascript - 如何根据对象的任何一个属性对对象数组进行排序

java - 如何在 3 个条件后对列表进行排序?

C++,Typedef 静态 getInstance 函数

java - Android 中的高效二维绘图

java - 在 Travis CI 中运行 jar

java - 集群 Websockets Tyrus Java

sorting - 多个 solr 服务器实例上的 solr.RandomSortField

java - JUnit Eclipse 无法运行单元测试

c++ - "classes are not objects"是什么意思?

java - 在 Java 中重写私有(private)方法对代码输出没有影响。为什么?