我想要製作一個Java程序,我首先從csv文件讀取行,然後將第二列添加到hashmap,第三列是值。Sum HashMap,ArrayList值(來自CSV)
文件中存在重複的product_id(第二列),它們具有不同的值,因此我已將值添加到數組列表中。 現在我必須弄清楚如何從arraylist中實際總結這些值,然後將輸出寫入csv文件(新建)。
輸入CSV(文件僅僅是個開始):
466152;Product_69105;1
466152;Product_69133;6
466152;Product_69214;2
466152;Product_69216;2
466154;Product_01007;1
466154;Product_01083;1
466154;Product_01136;1
466154;Product_01155;1
466154;Product_01488;1
466154;Product_01491;1
466154;Product_01499;2
466154;Product_01513;1
466154;Product_01593;1
466154;Product_01646;1
466154;Product_01656;1
466154;Product_01688;1
466154;Product_01703;1
466154;Product_01770;1
466154;Product_01804;1
466154;Product_01909;1
.....
我現在輸出:
Product_03067 [2, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 2]
Product_82332 [1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 3, 2, 1, 2, 1, 1, 2, 1, 1]
Product_69594 [1, 1, 1, 1, 1, 1, 2, 2, 1, 1]
Product_82330 [1, 1, 1, 1, 3]
Product_03618 [1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1,
2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2]
....
通緝輸出:
Product_03067, 20
Product_82332, 29
Product_69594, 12
Product_82330, 7
.....
Public class Tilausmäärä {
Map<String, List<Integer>> tuotteet;
String Tilausrivit = "tilausrivit.csv";
String Tilausrivit_2 = "abc.csv";
public Tilausmäärä() throws FileNotFoundException, IOException {
tuotteet = new HashMap<>();
readTilausrivitFile();
}
public void readTilausrivitFile() throws FileNotFoundException, IOException {
BufferedReader in = new BufferedReader(new FileReader(Tilausrivit));
String line;
while ((line = in.readLine()) != null) {
String columns[] = line.split(";");
String key = columns[1];
int valueInt;
List<Integer> valueList = null;
try {
valueInt = Integer.parseInt(columns[2]);
} catch (NumberFormatException e) {
System.out.println(e);
continue;
}
if (tuotteet.containsKey(key)) {
valueList = tuotteet.get(key);
} else {
valueList = new ArrayList<>();
tuotteet.put(key, valueList);
}
valueList.add(valueInt);
}
in.close();
}
public static void main(String[] args) {
try {
Tilausmäärä tm = new Tilausmäärä();
for (String k : tm.tuotteet.keySet()) {
System.out.println(k + " " + tm.tuotteet.get(k));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
可以使用一些幫助,所以任何好的想法表示讚賞。
謝謝!
如果目標是,你爲什麼把他們總結的值列表,而不是直接概括他們,把他們在地圖上是什麼時候?無論如何,你似乎知道如何建立一個地圖,我敢肯定你可以迭代地圖的條目(或者至少,你應該能夠通過閱讀文檔來弄清楚),你也應該能夠總結一個列表的元素。結合這三件事情,你有你的解決方案。 –
你想要做什麼樣的輸出?另一個CSV文件或只是一個終端打印? – Thecave3
輸出也應該是另一個csv文件。 –