java使用比较器。比较用于按对象列表和第二个属性对对象进行排序
我最初是根据对象的属性(比如,一个用户根据其名字)对列表进行排序的,如下所示:
Collections.sort(userList, (u1, u2) -> (u1.getFirstName()).compareTo(u2.getFirstName()));
我可以用以下内容替换:
Collections.sort(userList, Comparator.comparing(User::getFirstName));
但是现在用户有一个角色列表,每个角色都有一个角色名,我想按照用户的角色的角色名对列表进行排序。我想到了这个:
Collections.sort(userList, (u1, u2) -> (u1.getUserRoles().get(0).getRoleName()).compareTo(u2.getUserRoles().get(0).getRoleName()));
这似乎很管用
在IDE中,现在有一条消息:可以替换为Comparator。比较,但我不知道该怎么做。这可能吗?像这样的事情是行不通的:
Collections.sort(userList, Comparator.comparing(User::getUserRoles.get(0).getRoleName());
如何使用比较器对其进行排序。比较
在按roleName排序之后,如何才能按firstName作为第二个属性进行排序
# 1 楼答案
在这种情况下,不能使用方法引用,但可以使用lambda表达式:
要按两个属性排序,请执行以下操作:
或