一个处理多值Map集合的算法

来源:互联网 发布:安卓数据存储boolean 编辑:程序博客网 时间:2024/06/07 00:45
package com.java.timer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;public class TestMap {public static void main(String[] args) {int count = 1;List<Map<String, String>> resultListMap = new ArrayList<Map<String, String>>();Map<String, String> map = new HashMap<String, String>();List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();map.put("flag1", "a,b,c");map.put("flag2", "d,e");map.put("flag3", "f,g");for (Entry<String, String> entry : map.entrySet()) {String[] values = entry.getValue().split(",");count = count * values.length;for (String value : values) {Map<String, String> map2 = new HashMap<String, String>();map2.put(entry.getKey(), value);listMap.add(map2);}}List<Map<String, String>> targetList = new ArrayList<Map<String,String>>();int sum = map.size();List<Map<String, String>> maps = getList(count, sum, listMap);for (Map<String, String> map2 : maps) {if (map2.size() == sum) {targetList.add(map2);}}int num = 1;for (Map<String, String> map2 : targetList) {System.out.println("======" + (num++) + "======");for(Entry<String, String> entry : map2.entrySet()){System.out.println(entry.getKey() + ":" + entry.getValue());}}}private static List<Map<String, String>> getList(int count, int sum,List<Map<String, String>> listMap) {if (isCount(sum, listMap)) {return listMap;} else {List<Map<String, String>> listMap2 = new ArrayList<Map<String, String>>();for (Map<String, String> map : listMap) {for (Map<String, String> map2 : listMap) {Map<String, String> map3 = new HashMap<String, String>();map3.putAll(map2);map3.putAll(map);if (!isContain(map3, listMap2)) {listMap2.add(map3);}}}listMap.clear();listMap.addAll(listMap2);return getList(count, sum, listMap);}}private static boolean isCount(int sum, List<Map<String, String>> listMap) {for (Map<String, String> map : listMap) {if (map.size() == sum) {return true;}}return false;}private static boolean isContain(Map<String, String> map4,List<Map<String, String>> resultListMap) {boolean falg = false;for (Map<String, String> map : resultListMap) {if (map.equals(map4)) {return true;}}return falg;}}

原创粉丝点击