设为首页 加入收藏

TOP

Java8 Map 示例:一个略复杂的数据映射聚合例子及代码重构(四)
2018-01-10 06:06:41 】 浏览:1691
Tags:Java8 Map 示例 一个 复杂 数据 映射 聚合 例子 代码 重构
t;String,Object>> mergeOrderItemMap(Map<String, Map<String,String>> itemIndexMap) { if (itemIndexMap == null || itemIndexMap.isEmpty()) { return new HashMap<>(); } // Map[oldItemId, newItemId] Map<String,String> old2newItemIdMap = new HashMap<>(); Map<String,String> new2oldItemIdMap = new HashMap<>(); Set<Map.Entry<String,Map<String,String>>> entries = itemIndexMap.entrySet(); String orderNo = ""; String sID = ""; for (Map.Entry<String,Map<String,String>> entry: entries) { String indexKey = entry.getKey(); Map<String,String> value = entry.getValue(); if (indexKey.startsWith("item:")) { old2newItemIdMap.put(indexKey, value.get("item:item_core_id")); new2oldItemIdMap.put(value.get("item:item_core_id"), indexKey); orderNo = value.get("item:order_no"); sID = value.get("item:s_id"); } } Map<String, Map<String,Object>> newItemIndexMap = new HashMap<>(); for (Map.Entry<String,Map<String,String>> entry: entries) { String indexKey = entry.getKey(); Map<String,String> value = entry.getValue(); if (indexKey.startsWith("item:")) { if (newItemIndexMap.get(indexKey) == null) { newItemIndexMap.put(indexKey, new HashMap<>()); } newItemIndexMap.get(indexKey).putAll(value); } else if (indexKey.startsWith("item_core:")) { String itemCoreId = indexKey.split(":")[1]; String oldItemId = new2oldItemIdMap.get(itemCoreId); if (newItemIndexMap.get(oldItemId) == null) { newItemIndexMap.put(oldItemId, new HashMap<>()); } newItemIndexMap.get(oldItemId).putAll(value); } else if (indexKey.startsWith("item_price:")) { // item_price 与 item_id 一对一关系 String itemCoreId = itemIndexMap.get(indexKey).get("item_price:item_id"); String oldItemId = new2oldItemIdMap.get(itemCoreId); if (newItemIndexMap.get(oldItemId) == null) { newItemIndexMap.put(oldItemId, new HashMap<>()); } newItemIndexMap.get(oldItemId).putAll(value); } else if (indexKey.startsWith("item_price_change_log:")) { // item_price_change_log 与 item_id 多对一关系 String itemCoreId = itemIndexMap.get(indexKey).get("item_price_change_log:item_id"); String oldItemId = new2oldItemIdMap.get(itemCoreId); if (newItemIndexMap.get(oldItemId) == null) { newItemIndexMap.put(oldItemId, new HashMap<>()); } Map<String,Object> srcMap = newItemIndexMap.get(oldItemId); newItemIndexMap.get(oldItemId).putAll(merge(srcMap, value)); } } return buildFinalOrderItemMap(newItemIndexMap, old2newItemIdMap, orderNo, sID); } /** * 构建最终的订单商品信息 * @param itemIndexMap 商品信息 * @param old2newItemIdMap 新老itemId映射 * @param orderNo 订单号 * @param sID 店铺号 * @return 订单商品扩展信息 */ private static Map<String, Map<String,Object>> buildFinalOrderItemMap(Map<String, Map<String,Object>> itemIndexMap, Map<String,String> old2newItemIdMap, String orderNo, String sID) { Map<String, Map<String,Object>> finalResult = new HashMap
首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇杂谈 GC 下一篇谈谈 Tomcat 架构及启动过程[含部..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目