我有任何ArrayList
“监控”对象。每个对象都有两个字段,“brand::String”和“price::BigDecimal”。我正在使用以下 Stream,将 Monitor 对象分类为 HashMap<String, List<Monitor>>
, 其中key
是名称(因此具有相同名称的监视器最终出现在相同的列表中:
Map<String, List<Monitor>> monitorsByNameMap =
monitors.stream()
.collect(Collectors.groupingBy(Monitor::getName));
我想要每一个 List<Monitor>
在HashMap
根据 price
排序每个 Monitor
object - 最好按升序排列。我想知道是否可以通过添加到上面的表达式来实现。
最佳答案
按name
分组后可以使用collectingAndThen
Map<String, List<Monitor>> monitorsByNameMap = monitors.stream()
.collect(Collectors.groupingBy(Monitor::getName,
Collectors.collectingAndThen(Collectors.toList(),
l -> l.stream()
.sorted(Comparator.comparing(Monitor::getPrice))
.collect(Collectors.toList())
))
);
关于java - 使用 Stream API 创建 Map<String, List<Object>> ,其中对列表的元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806918/