2016-03-01 125 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())));