gpt4 book ai didi

JAVA.使用lambda让代码变得干净

转载 作者:行者123 更新时间:2023-12-02 02:30:58 24 4
gpt4 key购买 nike

下面是我的代码,我在其中根据参数对人员列表进行排序..姓名、号码或电子邮件地址。我想问一下如何使用lambda来美化这组代码,对于这3种情况,它们遵循类似的逻辑。

if (sortType.equals(NAME)) {
Collections.sort(ListofPeople, (Person p1, Person p2) ->
p1.getName().toString().compareTo(p2.getName().toString()));
} else if (sortType.equals(NUMBER)) {
Collections.sort(ListofPeople, (Person p1, Person p2) ->
p1.getPhone().toString().compareTo(p2.getPhone().toString()));
} else if (sortType.equals(EMAIL)) {
Collections.sort(ListofPeople, (Person p1, Person p2) ->
p1.getPhone().toString().compareTo(p2.getPhone().toString()));
}

最佳答案

嗯,第一件事是使用 Comparator.comparing 获取 Comparator 实例。

例如:

Collections.sort(ListofPeople,Comparator.comparing(Person::getName));

然后,您可以使用Map来存储各种Comparator,并摆脱if-else语句。

您的整个片段(除了 map 的初始化之外)将变成:

Collections.sort(ListofPeople,comparatorMap.get(sortType));

我不会将要比较的属性转换为String,而是确保这些属性的类型(电话号码、电子邮件地址等...)实现Comparable.

关于JAVA.使用lambda让代码变得干净,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47122288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com