用于使代码清洁的lambda的JAVA.Usage

时间:2017-11-05 13:45:57

标签: java lambda

下面是我的代码,我用它来根据参数...姓名或号码或电子邮件地址对人员列表进行排序。 我想问一下如何使用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()));
}

1 个答案:

答案 0 :(得分:2)

嗯,首先要使用Comparator.comparing来获取Comparator个实例。

例如:

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

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

您的整个代码段(在地图初始化旁边)将变为:

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

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