This is my list:
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
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()));
If I try
o1.getGroup().compareTo(o2.getGroup()) && o1.getAge().compareTo(o2.getAge())
it's turned out error...
解决方案
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;
});