为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Java 流从一组对象中提取不同整数的排序列表?

如何使用 Java 流从一组对象中提取不同整数的排序列表?

蝴蝶不菲 2021-12-10 10:00:12
我有一组值对象:Set<EntityKey> clientAssignedPlaceholderEntityKeys其中 EntityKey 类具有以下属性:private Integer objectRef;private String entityType;使用流将不同的 objectRef 值提取到排序列表中的最有效方法是什么?我有以下内容,但它两次调用 stream() 的事实似乎是一种难闻的气味:  // Extract into a sorted list all the distinct placeholder objectRefs (regardless of type).  List<Integer> sortedPlaceholderObjectRefs = clientAssignedPlaceholderEntityKeys.stream()          .map(entityKey -> entityKey.getObjectRef())          .collect(Collectors.toSet())          .stream()  // having to call stream() a 2nd time here feels sub-optimal          .sorted()          .collect(Collectors.toList());
查看完整描述

3 回答

?
www说

TA贡献1775条经验 获得超8个赞

也许:

sortedPlaceholderObjectRefs = clientAssignedPlaceholderEntityKeys.stream()
                      .map(entityKey -> entityKey.getObjectRef())
                      .sorted()
                      .distinct()
                      .collect(Collectors.toList());

编辑:

.distinct()之前调用.sorted()可能更优化


查看完整回答
反对 回复 2021-12-10
?
函数式编程

TA贡献1807条经验 获得超9个赞

      clientAssignedPlaceholderEntityKeys.stream()
                                         .map(ek -> ek.getObjectRef())
                                         .sorted()
                                         .distinct()
                                         .collect(Collectors.toList());

关于你对sorted()distinct()顺序的疑问

引用这里的第一个答案:在sorted()之后链接distinct()操作,实现将利用数据的排序性质并避免构建内部 HashSet。


查看完整回答
反对 回复 2021-12-10
?
MMTTMM

TA贡献1869条经验 获得超4个赞

List<Integer> sortedRefs = clientAssignedPlaceholderEntityKeys
                      .stream()
                      .map(EntityKey::getObjectRef)
                      .distinct()
                      .sorted()
                      .collect(Collectors.toList());


查看完整回答
反对 回复 2021-12-10
  • 3 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号