使用Comparator.comparing按对象列表然后按第二个属性对对象进行排序

手册:

最初,我通过对象的属性(例如,用户通过firstName)对列表进行排序

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.comparing ...代替,但是我不知道该怎么做。这有可能吗?这样的事情不起作用:

Collections.sort(userList, Comparator.comparing(User::getUserRoles.get(0).getRoleName());

如何使用Comparator.comparing对此进行排序

在按roleName排序之后,如何将firstName作为第二个属性排序

他们是 :

在这种情况下,您不能使用方法引用,但是可以使用lambda表达式:

Collections.sort(userList, Comparator.comparing(u -> u.getUserRoles().get(0).getRoleName()));

按两个属性排序:

Collections.sort(userList, Comparator.comparing((Function<User,String>)u -> u.getUserRoles().get(0).getRoleName())
                                     .thenComparing(User::getFirstName));

要么

Collections.sort(userList, Comparator.comparing((User u) -> u.getUserRoles().get(0).getRoleName())
                                     .thenComparing(User::getFirstName));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更新在一个对象列表基于使用流第二个值

按第一个元素对对象列表排序,如果相等则按第二个元素排序

使用Comparator对ArrayList排序对象

按元组的第二个值排序dict或list,然后按第一个排序

Java排序:按属性对对象数组进行排序,不允许使用Comparable对象

使用Java 8按类型列表的对象属性对对象列表进行分组:JAVA

Java:使用比较器和属性的第二个单词对对象列表进行排序

使用Lodash按值对对象数组进行排序

在第二个列表中找到丢失的对象然后使用Kotlin将其添加的更好方法

如何使用Java 8中的自定义Comparator接口对对象数组进行排序?

使用Typescript按值对对象数组进行排序

使用生成器按许多属性对对象列表进行排序

如何使用自定义管道在Angular中按属性值对对象数组进行排序?

如何使用python中的第二个键对对列表进行排序?

使用Ansible按第二个列表的特定顺序映射Debian软件包列表

如何使用std :: lower_bound比较没有第二个对象的对象变量进行比较

Python-按对象属性对列表进行排序,并按第二个列表提供的顺序进行排序...是否可以改进?

过滤然后按日期对对象数组进行排序

如何在不使用lambda的情况下按第二个元素对列表进行排序?

使用linq按相似性对对象进行排序

在C中按对的第一个元素然后按对的第二个元素对对的向量进行排序

在 Ruby 中使用第二个值对对进行排序

使用 linq 按对象的 2 个属性对对象列表进行排序

使用 Comparator 按索引对 List<String[]> 进行排序

使用 lodash 按嵌套属性对对象数组进行排序

为什么要使用其属性绘制多个对象,而第二个对象使用先前的对象值?

如何使用lodash按日期字段对对象进行排序?

使用排序参数按对象属性对列表进行排序

如何仅使用一个函数按属性对对象数组进行排序?