1. 程式人生 > >java多層map巢狀案例

java多層map巢狀案例

這是做專案事service層的一個方法,TmCisDataItemDef是一個物件,tmCisDataItemDefDao.queryForList()方法從資料庫中取出所有TmCisDataItemDef表中的資料放大list中,再變數list,根據物件的欄位分級放到map中。
public Map<String, Map<String, Map<String, List<TmCisDataItemDef>>>> getItemDefMap() {

		TmCisDataItemDef tmCisDataItemDef = new TmCisDataItemDef();
		List<TmCisDataItemDef> list = tmCisDataItemDefDao.queryForList(tmCisDataItemDef);

		Map<String, Map<String, Map<String, List<TmCisDataItemDef>>>> productMap 
				= new HashMap<String, Map<String, Map<String, List<TmCisDataItemDef>>>>();

		for (TmCisDataItemDef t : list) {
			// 判斷機構是否存在
			if (productMap.get(t.getCreditOrgCode()) == null) {
				productMap.put(t.getCreditOrgCode(),
						new HashMap<String, Map<String, List<TmCisDataItemDef>>>());
			}
			Map<String, Map<String, List<TmCisDataItemDef>>> productInMap = productMap.get(t
					.getCreditOrgCode());
			// 判斷產品是否存在
			if (productInMap.get(t.getProductCode()) == null) {
				productInMap.put(t.getProductCode(),
						new HashMap<String, List<TmCisDataItemDef>>());
			}
			
			Map<String, List<TmCisDataItemDef>> productIn2Map = productInMap.get(t.getProductCode());
			// 判斷維度是否存在
			if (productIn2Map.get(t.getDmType()) == null) {
				productIn2Map.put(t.getDmType(),
						new ArrayList<TmCisDataItemDef>());
			}
			
			productIn2Map.get(t.getDmType()).add(t);
		}

		return productMap;
	}