Я провел некоторое время, исследуя проблемы, похожие на мои, и теперь я застрял с моим кодом. Я выполнил основной читатель CSV файл, но я застрял в обработке на входКак назначить повторяющиеся элементы массива как уникальные ключи и подсчитать соответствующие целочисленные значения?
Текущий результат:
Source [medium = go bio , values = 5]
Source [medium = go bio , values = 5]
Source [medium = metal sink , values = 2]
Source [medium = go bio , values = 5]
Source [medium = metal sink , values = 3]
Done
Но то, что я хочу что-то вроде этого.
Выход:
[medium = go bio , values = 15]
[medium = metal sink , values = 5]
Содержимое моего текстового файла.
go,bio,5
go,bio,5
metal,sink,2
go,bio,5
metal,sink,3
И это мой код:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileReader;
import java.util.HashMap;
public class CVSReader {
public static void main(String[] args) {
CVSReader obj = new CVSReader();
obj.run();
}
public void run() {
String csvFile = "file2.txt";
BufferedReader br = null;
String line;
String cvsSplitBy = ",";
String[] source;
try {
//HashMap here
HashMap<String, String> hash = new HashMap<>();
HashMap<String, Integer> hash2 = new HashMap<>();
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// comma separator here
source = line.split(cvsSplitBy);
hash.put(source[0], source[0]);
hash.put(source[1], source[1]);
hash.put(source[2], source[2]);
System.out.println("Source [medium = " + hash.get(source[0]) + " " +
hash.get(source[1]) + " , values = " + hash.get(source[2]) + "]");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
Большого спасибо, комментарии, они очень информативны. Я буду больше читать об этом, еще раз спасибо! – shanxxix