我是 Java 8 的新手,在下面的示例中,我创建了一个 Map,其键值为 String,值为整数的 ArrayList。
Map<String,List<Integer>> mapLstInteger=new HashMap<String,List<Integer>>() {
{
put("A",Arrays.asList(1,2,3));
put("B",Arrays.asList(4,5,6));
put("C",Arrays.asList(7,8,9));
}
};
我编写了下面的代码来针对每个键执行 arrayList 元素的总和,并试图将总和值存储在单独的 ArrayList 中。
List<Integer> sumLst=mapLstInteger.entrySet().stream().map(e->e.getValue())
.reduce((inputLst, outputLst)->{
int sum=0;
for(int count=0;count<inputLst.size();count++)
{
sum=sum+inputLst.get(count);
}
outputLst.add(sum);
return outputLst;
}).get();
当我尝试执行以下代码时,我遇到了异常。
com.calculation.sum.client 的 java.util.AbstractList.add(AbstractList.java:108) 的 java.util.AbstractList.add(AbstractList.java:148) 的线程“main”java.lang.UnsupportedOperationException 中的异常。 Client.lambda$1(Client.java:43) at java.util.stream.ReduceOps$2ReducingSink.accept(ReduceOps.java:123) at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1696) 在 java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 在 java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)在 java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) 在 java.util.stream.java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)。ReferencePipeline.reduce(ReferencePipeline.java:479) 在 com.calculation.sum.client.Client.main(Client.java:37)
任何人都可以让我知道我在上面的代码中做错了什么>
哆啦的时光机
慕的地10843
茅侃侃
相关分类