BeanのListをBeanのKey毎にListを作成して、そのKeyで作成したListをValueとするMAPの作成する例
入力データ
Map<Integer, List<DataBean>> map = new HashMap<Integer, List<DataBean>>();
List<DataBean> srcList = new ArrayList<DataBean>();
srcList.add(new DataBean(1,4,"四番"));
srcList.add(new DataBean(3,3,"五番"));
srcList.add(new DataBean(1,6,"二番"));
srcList.add(new DataBean(2,7,"一番"));
srcList.add(new DataBean(2,5,"三番"));
srcList.add(new DataBean(1,2,"六番"));
srcList.add(new DataBean(3,1,"七番"));
List<DataBean> targetList = new ArrayList<DataBean>();
//集約対象のID
Integer tmpId = null;
//次のIDの変更有無
boolean flag = false;
Iterator<DataBean> iteData = srcList.iterator();
while(true){
if(iteData.hasNext()){
DataBean data = iteData.next();
//IDが変わる場合
if(!flag) {
tmpId = data.getId();
flag = true;
}
//集約する場合
if(tmpId.equals(data.getId())) {
targetList.add(data);
//集約済みなので削除
iteData.remove();
}
}else {
//集約対象がなくなったので、MAPに設定
map.put(tmpId, targetList);
//集約済みListの初期化(空の新しいインスタンスを設定)
targetList = new ArrayList<DataBean>();
//初期化
flag = false;
//イテレータの再作成(残った要素での再作成)
iteData = srcList.iterator();
//全ての要素がなくなったので、処理のLoopから抜ける
if(!iteData.hasNext()){
break;
}
}
}
//MAP内容を表示
Collection<List<DataBean>> dataLists = map.values();
Iterator<List<DataBean>> iteList = dataLists.iterator();
while(iteList.hasNext()) {
System.out.println("--ID START--");
List<DataBean> list = iteList.next();
Iterator<DataBean> iteDataDisp = list.iterator();
while(iteDataDisp.hasNext()) {
DataBean data = iteDataDisp.next();
System.out.print("ID:"+ data.getId() + "ID2:"+data.getId2()
+ "NAME:"+ data.getName());
}
System.out.println("\n--ID END--\n\n\n");
}
return map;
}
入力データ
Map<Integer, List<DataBean>> map = new HashMap<Integer, List<DataBean>>();
List<DataBean> srcList = new ArrayList<DataBean>();
srcList.add(new DataBean(1,4,"四番"));
srcList.add(new DataBean(3,3,"五番"));
srcList.add(new DataBean(1,6,"二番"));
srcList.add(new DataBean(2,7,"一番"));
srcList.add(new DataBean(2,5,"三番"));
srcList.add(new DataBean(1,2,"六番"));
srcList.add(new DataBean(3,1,"七番"));
List<DataBean> targetList = new ArrayList<DataBean>();
//集約対象のID
Integer tmpId = null;
//次のIDの変更有無
boolean flag = false;
Iterator<DataBean> iteData = srcList.iterator();
while(true){
if(iteData.hasNext()){
DataBean data = iteData.next();
//IDが変わる場合
if(!flag) {
tmpId = data.getId();
flag = true;
}
//集約する場合
if(tmpId.equals(data.getId())) {
targetList.add(data);
//集約済みなので削除
iteData.remove();
}
}else {
//集約対象がなくなったので、MAPに設定
map.put(tmpId, targetList);
//集約済みListの初期化(空の新しいインスタンスを設定)
targetList = new ArrayList<DataBean>();
//初期化
flag = false;
//イテレータの再作成(残った要素での再作成)
iteData = srcList.iterator();
//全ての要素がなくなったので、処理のLoopから抜ける
if(!iteData.hasNext()){
break;
}
}
}
//MAP内容を表示
Collection<List<DataBean>> dataLists = map.values();
Iterator<List<DataBean>> iteList = dataLists.iterator();
while(iteList.hasNext()) {
System.out.println("--ID START--");
List<DataBean> list = iteList.next();
Iterator<DataBean> iteDataDisp = list.iterator();
while(iteDataDisp.hasNext()) {
DataBean data = iteDataDisp.next();
System.out.print("ID:"+ data.getId() + "ID2:"+data.getId2()
+ "NAME:"+ data.getName());
}
System.out.println("\n--ID END--\n\n\n");
}
return map;
}