【发布时间】:2015-05-23 17:44:48
【问题描述】:
我想将包含 time 属性的对象列表分组为 5 分钟间隔,最好使用流和收集器。
我在 StackOverflow 上找到的唯一可能的解决方案是计算我需要多少个间隔(子列表),将每个对象添加到每个列表中,并过滤掉不适合相应时间范围的对象,这不完全是很好的解决方案。
(您可以在这里找到主题:How to group elements of a List by elements of another in Java 8)
我想到了类似的东西:
List<MyObject> list = new ArrayList<MyObject>();
.......
List<List<MyObject>> grouped = list.stream().collect(Collectors.groupingBy(obj -> obj.getTime() / intervalLength));
这当然行不通。
我希望随着 Java 8 及其功能的使用越来越多,我们可以找到解决此类问题的解决方案。
问候, 克拉斯 M.
编辑: 最后,我使用了@Harsh Poddar 的解决方案,并使用
将地图转换为列表列表for(Map.Entry<Integer, List<MyObject>> entry:map.entrySet())
list.add(entry.getValue());
注意:列表必须在之后进行排序。
【问题讨论】:
标签: list lambda java-8 java-stream