前提・実現したいこと
あるフォルダにあるファイル名を元にリストを作成したいです。
ファイル名は
20200227_0001_A.text
のようになっていて、(日付)(ID)(型).txtのように規則的につけられています。
フォルダに
・20200225_0001_A.txt
・20200226_0001_B.txt
・20200227_0001_A.txt
・20200227_0001_B.txt
・20200227_0002_A.txt
・20200227_0002_C.txt
とファイルがあった時に関する質問です。
該当のソースコード
public String ok() { List<TestInfoBean> list = new ArrayList<TestInfoBean>(); // ファイル置き場 String path = "C:\tmp\test\_test"; File dir = new File(path); File files[] = dir.listFiles(); // ファイル数分繰り返し for(int i=0; i<files.length; i++){ // ファイル名取得 String fileName = files[i].getName(); // ファイル名分割 String[] param = fileName.split("_"); // TestInfoBeanにセット TestInfoBean info = new TestInfoBean(); info.setHiduke(param[0]); info.setId(param[1]); String type = param[2].substring(0, 1); switch(type) { case "A": info.setTypeA(true); break; case "B": info.setTypeB(true); break; case "C": info.setTypeC(true); break; } list.add(info); } return "ok"; }
@Data public class TestInfoBean { private String hiduke; private String id; private boolean typeA; private boolean typeB; private boolean typeC; }
発生している問題・エラーメッセージ
今のままだとlistには6つの要素があるのですが
本当は日付とIDが同じだった場合のinfoを一つにまとめてlistに追加したいです。
例)
・20200227_0001_A.txt
・20200227_0001_B.txt
は日付とIDが同じのため
info.hidukeが20200227、 info.idが0001、 info.typeAがtrue、 info.typeBがtrue、 info.typeCがfalse
のように一つのinfoとして扱いたいです。(今回のファイルの場合、合計のlistの要素を4つにしたいです)
しばらく考えてはみたのですがどうやって比較すれば良いかがわからず…
わかる方がいたら教えてください。

回答2件
あなたの回答
tips
プレビュー