使用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

我想按列表排序Group,如果Group等于则按Age,如果Age等于则按Name。但是到目前为止,我只能使用Lambda表达式按一个属性排序:

list.sort((Object o1, Object o2) -> o1.getGroup().compareTo(o2.getGroup()));

如果我尝试

o1.getGroup().compareTo(o2.getGroup()) && o1.getAge().compareTo(o2.getAge())

原来是错误的…

回答:

将lambda 表达式 更改为lambda {block} ,而不必指定参数类型:

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表达式对多个属性进行排序 的全部内容, 来源链接: utcz.com/qa/433487.html

回到顶部