首页 > 解决方案 > Java Stream 根据值从地图中收集数据

问题描述

我有一个 Map<long, integer> ,我想将它转换为列表的集合,但条件是单个列表可以包含其值总和小于 X 的索引。如何通过java流实现这一点?需要更改为使用流的代码是

int count=0;
   List<Long> values =new LinkedList<>();
    Collection<List<Long>> collection =new LinkedList<>();
   for(Map.Entry<Long,Integer> entry : maptoProcess.entrySet())
   {
       if(count+entry.getValue()<=maxNumberAllowed){
           values.add(entry.getKey());
           count+=entry.getValue();
       }
       else
       {   collection.add(values);
             count=0;
           values=new linkedList();
       }
   }
  

例如:- Map{{1,300},{2,50},{3,100}} maxNumberAllowed :- 300 输出 :- 列表 [[1],[2,3]]

标签: javajava-8java-stream

解决方案


推荐阅读