2016-03-01 116 views
2

分组值我有3类:爪哇在数组列表

  1. 计算类(包括FinalPrice()方法,该方法是具有双值返回)
  2. 文件读取器类(负载CSV文件,分割数据成阵列,并返回与所述阵列的所述第一元件,这是一个字符串。包含的getType()方法)
  3. 合同类(仅包含一个构造函数)

File a = new File("D:\\...\\contract.csv"); Calculation1 calc = new Calculation1(a); File_Reader1 b = new File_Reader1(); Contract c = new Contract(b.getType(a),calc.FinalPrice());

我需要一个列表来存储合同对象和分组密钥(这是b.getType(a))和总结它们的值(这是calc.FinalPrice()),像

输入(举例):

list.add("AB", 5); list.add("AC", 8); list.add("AB", 12);

我想获得类似这样的输出:

"AB" : 17 "AC" : 8

谁能帮助我?

+0

,你可以重复你的ArrayList或者地图或任何在第二列表聚集值(用含有()如果密钥已在第二个列表或者不检查) - 这当然不是很高效,但它应该工作。取决于你的列表/地图应该有多大 –

+1

这是一个重复的:http://stackoverflow.com/questions/23848129/is-there-an-aggregateby-method-in-the-stream-java-8-api – Tunaki

回答

1

在Java 8,

entries.stream().collect(Collectors.groupingBy(
     entry -> entry.getKey(), 
     Collectors.summingInt(entry -> entry.getValue())));