【发布时间】:2019-03-11 09:42:42
【问题描述】:
我有一个包含如下值的列表,
List<Integer> data = Arrays.asList(10,10,10,9,9,9,9,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,6,6,6,6);
从那里我需要找到 first(10,9) 和 last(6,7) 不同值的总和和计数。
预期的操作:
First : Count=7, Sum=66
Last : Count=13, Sum=87
如何使用 java 8 实现这一点?
我试过的代码:
List<Integer> data = Arrays.asList(10,10,10,9,9,9,9,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,6,6,6,6);
List<Integer> first = data.stream().distinct().collect(Collectors.toList()); //here I am trying get first distinct values(10,10,10,9,9,9,9)
List<Integer> last = data.stream().distinct().collect(Collectors.toList());//here I am trying get last distinct values(7,7,7,7,7,7,7,7,7,6,6,6,6)
int firstSum = first.stream().mapToInt(Integer::intValue).sum();
long firstCount = first.stream().mapToInt(Integer::intValue).count();
int lastSum = last.stream().mapToInt(Integer::intValue).sum();
long lastCount = last.stream().mapToInt(Integer::intValue).count();
System.out.println("First Sum:"+firstSum+" Count"+firstCount);
System.out.println("Last Sum:"+lastSum+" Count"+lastCount);
【问题讨论】:
-
如何使用 java 8 实现这一点 通过编写一些代码......但无论哪种方式,在这里都很难为您提供帮助,因为这非常不清楚
-
您标记了您的问题 java-stream,但流不太适合您的要求。我可能会使用老式循环。
标签: java list java-8 java-stream