请教,问下这个Map 该怎么写?多层嵌套
有一张表 t_sym_crm_dict
有如下数据:
DICT_ID DICT_TYPEID DICT_NAME CITY_ID
1003 PM_DEDUDTTYPE 限时扣费(每月06~10日) 200
1011 PM_DEDUDTTYPE 短信银行划扣充值 200
1012 PM_DEDUDTTYPE 自动银行划扣充值 200
001 PM_PAYMENTTYPE 后付费 200
002 PM_PAYMENTTYPE 预付费(智能网平台) 200
003 PM_PAYMENTTYPE 预付费(计费帐务系统) 200
01 CM_CERTTYPE 身份证 760
02 CM_CERTTYPE 军官证 760
03 CM_CERTTYPE 护照 760
04 CM_CERTTYPE 户口本 760
01 CM_CUSTTYPE 大客户 760
02 CM_CUSTTYPE 商业客户 760
03 CM_CUSTTYPE 普通客户 760
04 CM_CUSTTYPE 流动客户 760
05 CM_CUSTTYPE 公免 760
。。。
现在要把这些数据装在一个这样的Map结构里:
Map<String, Map<String, LinkedHashMap<String, TSymCrmDict>>>
最外层Map key=CITY_ID 中间一层key=DICT_TYPEID 最里面是key=DICT_ID
这个是三层的结构 两层的我会 三层不知道咋办了。 各位大大们 能帮帮小弟么?
附上两层的代码 高手可忽略跳过。。。
以下是两层的写法。
// 查询全部字典
String HQL="from TSymCrmDict t order by t.cityId,t.dicttypeId,t.dictId";
Map<String, LinkedHashMap<String, TSymCrmDict>> dictMap = new HashMap<String, LinkedHashMap<String, TSymCrmDict>>();
//查询出列表对象集合
List<TSymCrmDict> dictList = session.createQuery(hql).list();
Iterator it = dictList.iterator();
// 构建Map
String lastType = "".intern();
LinkedHashMap<String, TSymCrmDict> subMap = new LinkedHashMap<String, TSymCrmDict>();
while (it.hasNext()) {
TSymCrmDictdict = (TSymCrmDict)it.next();
String dictType = dict.getDictTypeid().intern();
// dictTypeId和上次不同
if (dictType.intern() != lastType.intern()) {
// 加入到map
if (!subMap.isEmpty()) {
dictMap.put(lastType.intern(), subMap);
}
subMap = new LinkedHashMap<String, TSymCrmDict>();
subMap.put(dict.getDictId().intern(), dict);
}
// dictTypeId和上次相同
else {
subMap.put(dict.getDictId().intern(), dict);
}
// 加入最后一个列表
if (!it.hasNext()) {
dictMap.put(dictType.intern(), subMap);
}
lastType = dictType.intern();
}
上面是两层的 外面一层Key=dicttypeId 里面一层 key=dictid
由于业务需要现在又多了一个cityId在最外层。 各位大大们,帮帮忙。。