使用Lambda表达式对多个属性进行排序 [英] Sorting multiple attribute with Lambda Expressions
本文介绍了使用Lambda表达式对多个属性进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的清单:
Name: Ben || Age: 5 || Group: 1
Name: Andy || Age: 6 || Group: 2
Name: Charlie || Age: 6 || Group: 2
Name: Ben || Age: 5 || Group: 1
Name: Andy || Age: 5 || Group: 2
Name: Charlie || Age: 5 || Group: 1
我想按组$ c对列表进行排序$ c>,如果
组
等于年龄
,如果年龄
等于名称
。但到目前为止,我只能使用Lambda表达式按一个属性排序:
I want to sort the list by Group
, if Group
is equal then by Age
, and if Age
is equal then by Name
. But so far I can only sort by one attribute, using Lambda Expressions:
list.sort((Object o1, Object o2) -> o1.getGroup().compareTo(o2.getGroup()));
如果我尝试
o1.getGroup().compareTo(o2.getGroup()) && o1.getAge().compareTo(o2.getAge())
结果发现错误...
推荐答案
将lambda 表达式更改为lambda {block} ,然后你不必指定参数类型:
Change lambda expression to lambda {block}, and you don't have to specify the parameter types:
list.sort((o1, o2) -> {
int cmp = o1.getGroup().compareTo(o2.getGroup());
if (cmp == 0)
cmp = Integer.compare(o1.getAge(), o2.getAge());
if (cmp == 0)
cmp = o1.getName().compareTo(o2.getName());
return cmp;
});
这篇关于使用Lambda表达式对多个属性进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文