java - 仅返回具有最大找到长度的元素 java 流
问题描述
我正在尝试执行以下操作:
1) 从符合条件的集合中获取元素 2) 根据长度对其进行排序 3) 仅返回具有最大长度的元素
所以例如
List<String> list = new ArrayList();
list.add("xone");
list.add("two");
list.add("xthree");
list.add("xseven");
使用流我可以创建:
list.stream()
.filter( e -> e.startsWith("x"))
.sort( e -> e.length() )
.collect(..)
但是,这只是对其进行排序..有什么漂亮的方法可以仅返回具有最大找到长度的元素吗?在这种情况下,它将是“xthree”和“xseven”
感谢帮助!
解决方案
编写这些操作的稍微紧凑的方法groupingBy
如下 -
TreeMap<Integer, List<String>> map = new TreeMap<>(list.stream()
.collect(Collectors.groupingBy(String::length)));
List<String> maxLengthStrings = map.lastEntry().getValue();
推荐阅读
- magento2 - 为什么我在 magento 2 中的编译时出错
- browser-cache - 有什么方法可以使用 appium python 清除缓存并从 android 释放空间?
- php - 代理后面的 docker 容器中的 shibboleth SP 问题
- jdbc - 什么是 MaxOpenPreparedStatements for DBCP for BasicDataSource 的最佳值
- vuejs2 - 赛普拉斯文件上传错误与 cypress-file-upload
- javascript - 从 chrome 扩展中获取数据
- java - 打开安卓的闹钟功能?
- authentication - 使用 OpenId Connect 进行 Apple 身份验证后出现 404 错误
- python - 试图运行 make 命令,但得到了这个错误
- xcode - 如何在持续集成中对 macOS 应用程序进行代码签名