Javaのリストについて
帳票を作成するためのリストを作成しております。
流れはまずは帳票の様式を定義します。
次に帳票のフィールドに該当するキーとバリューを登録します(今回は入力されたものは帳票のフィールドにあるものとする)。
何度かキーバリューを登録したらそれを1レコードとしてリストにaddします。
これを繰り返して帳票を作成したいです。
public class ReportInfoBuilderBean {
//ここに帳票IDを格納
private String reportId;
//ここに帳票IDごとのリストを格納したい
private List<map> reportInfoList;
//セッターゲッター省略
}
public class ReportInfoBuilder {
//ここで帳票のレコードを作成していく
private List<Object> reportInfoList= new ArrayList<Object>();
private List<Map> recordInfoList= new ArrayList<Map>();
private Map<String,String> map = new LinkedHashMap<String,String>();
private ReportInfoBuilderBean reportInfoBuilderBean = new ReportInfoBuilderBean();
//帳票様式追加(帳票IDを追加)
public void addReport(String reportId){
reportInfoBuilderBean.setReportId(reportId);
recordInfoList = new ArrayList<Map>();
}
//キーバリューを追加
public void addValue(String reportKey,String value){
map.put(reportKey, value);
System.out.println("map:"+map);
}
//キーバリューを1つのレコードに追加
public void writeRecord(){
recordInfoList.add(map);
map = new LinkedHashMap<String, String>();
reportInfoBuilderBean.seteportInfoList(recordInfoList);
}
}
今の段階だとこんな感じですがこれだと帳票IDが追加されて変更されるたびにrecordInfoListがnewされてしまうので帳票IDごとのListが作れません。
しかし、addReport
メソッドのrecordInfoList = new ArrayList<Map>();
をなくしてしまってもどうしようもないです。
帳票IDごとにListを作成したいです。
例)
ReportAを追加
map.put(A,テスト1);
map.put(B,テスト2);
map.put(C,テスト3);
reportInfoList.add(map);
map.put(D,テスト4);
map.put(E,テスト5);
reportInfoList.add(map);
ReportBを追加
map.put(BA,テスト2_1);
map.put(BB,テスト2_2);
map.put(BC,テスト2_3);
reportInfoList.add(map);
map.put(BD,テスト2_4);
map.put(BE,テスト2_5);
reportInfoList.add(map);
こうして
テスト1~3とテスト4~5の2レコードを持ったReportAと
テスト2_1~2_3とテスト2_4~2_5の2レコードを持ったReportBを作成したいのですが
どうしたらいいでしょうか?
自分ではBeanに格納してそれを呼び出せばいいと思ったんですが先ほども言ったとおり初期化のタイミングなどがありうまくできません。
だれか教えてください。