前提・実現したいこと
eclipseでcsvファイルを読み込み、Listに格納しています。
きちんと格納で来ているかも怪しいのですが、ここからさらに、重複しているデータを一つにまとめたいです。
以下のようなcsvファイルがあり、それを読み込んだという前提があります。
(以前にも似たような質問をさせていただいたのですが、クラスはなくても良いことになりました。)
山田太郎,数学,98 太田靖,国語,79 南義弘,理科,65 藤波健吾,社会,78 太田靖,社会,77 田中康子,理科,88 岡崎理恵,国語,77 山田太郎,社会,68 (以下制限は特になく続く)
その上で、例えば山田太郎は2回登場していますが、この重複をなくし、出力結果には
山田太郎,合計点:(calcSumなどで算出),平均点:(calcAverageなどで算出)
とされるようにしたいと考えています。
cvsファイルの読み取りクラスとPersonクラスが存在しており、calcSum()メソッドはPersonクラスに実装しました。
発生している問題・エラーメッセージ
重複した名前を持つデータの結合?の仕方が掴めない
該当のソースコード
Java
1// 読み取りクラス 2public void readCsv(){ 3 4 List<String> data_a = new ArrayList<String>(); 5 String data_s[] = {null}; // 要素数未定のためnull 6 7 File fl = new File("testdata"); 8 9 try(FileReader fr = new FileReader(fl)); 10 BufferedReader in = new BufferedReader(fr){ 11 12 String line; 13 while((line = in.readLine()) != null){ 14 data_s = line.split(",", 0); 15 Person person = new person(data[0], data[1]); 16 17 for(int i = 0; i >= data_s.length ;i++){ 18 // indexOfなど使って重複しているデータを探す? 19 } 20 } 21 } 22} 23 24// Personクラス 25public class Student(){ 26 27 private String name; 28 private List<Subject> subjects = new ArrayList<Subject>(); // 受けた教科を入れる 29 30 // コンストラクタ 31 public Student(String _name){ 32 name = _name; 33 } 34 35 // メソッド 36 // 受けた教科の合計点数を算出したい 37 public Bigdecimal calcSum(){ 38 // BigDecimalの初期化 39 for(Subject subject : subjects){ 40 result.add(subject.getscore()); 41 } 42 return result; 43 } 44} 45
試したこと
indexOfを使ってみたのですが、それだとindexが取得できるだけなのでうまくいきませんでした。