我正在尝试将其转换为:

Map<String,Long> parties = new HashMap<>();
parties.add("a", 1);
...
Long counter = 0l;

for (Long votes : parties.values()){
    counter += votes;
}

对于Java8中的lambda,我尝试使用reduce进行如下操作:
parties.entrySet().stream().reduce((stringLongEntry, stringLongEntry2) -> /*Here I Stack*/)

但是我不知道如何继续。

PS:我知道我可以做到:
parties.values().stream().count();,但我想找到另一种方法。

最佳答案

尝试以下表达式:

counter = parties.values().stream().map((votes) -> votes).reduce(counter, (a, i) -> a+i);

此外,您的代码中几乎没有错误:
  • 使用Map<String,Long> parties = new HashMap<>();是正确的方法,但是您的错误是错误的。
  • HashMap没有.add(..)方法,但是.put(..)方法:
    parties.put("a",1L);
    
  • 因为您的值为Long,所以您必须使用1L1l而不是整个1来指定Long值。
  • 07-24 13:51