62,616
社区成员
发帖
与我相关
我的任务
分享
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
/**
* ListMapTest - joinListMap
* @author SageZk
*/
public class ListMapTest {
public static List<Map<String, String>> joinListMap(List<Map<String, String>>a, List<Map<String, String>> b) {
if (a == null || b == null) return null;
if (a.isEmpty() || b.isEmpty()) return null;
List<Map<String, String>> r = new LinkedList<Map<String, String>>();
Map<String, List<Map<String, String>>> map = new TreeMap<String, List<Map<String, String>>>();
for (Map<String, String> ma : a) {
String date = ma.get("date");
if (!map.containsKey(date)) map.put(date, new LinkedList<Map<String, String>>());
map.get(date).add(ma);
}
Set<String> set = map.keySet();
for (String d : set) {
List<Map<String, String>> la = map.get(d);
for (Map<String, String> mb : b) {
String numb = mb.get("num");
boolean flag = true;
for (Map<String, String> ma : la) {
String numa = ma.get("num");
if (numa.equals(numb)) {
r.add(new HashMap<String, String>(ma));
flag = false;
break;
}
}
if (flag) {
Map<String, String> tm = new HashMap<String, String>(la.get(0));
tm.put("num", numb);
tm.put("money", "");
r.add(tm);
}
}
}
return r;
}
public static void main(String[] args) {
Map<String, String> map = null;
//List 1
List<Map<String, String>> la = new LinkedList<Map<String, String>>();
map = new HashMap<String, String>();
map.put("date", "20080701");
map.put("num", "101");
map.put("money", "1000");
la.add(map);
map = new HashMap<String, String>();
map.put("date", "20080701");
map.put("num", "102");
map.put("money", "2000");
la.add(map);
map = new HashMap<String, String>();
map.put("date", "20080702");
map.put("num", "101");
map.put("money", "3000");
la.add(map);
//List 2
List<Map<String, String>> lb = new LinkedList<Map<String, String>>();
map = new HashMap<String, String>();
map.put("num", "101");
lb.add(map);
map = new HashMap<String, String>();
map.put("num", "102");
lb.add(map);
map = new HashMap<String, String>();
map.put("num", "103");
lb.add(map);
//List Result
List<Map<String, String>> r = joinListMap(la, lb);
if (r != null) {
System.out.println(r.size());
for (Map<String, String> m : r) {
String s = "";
s += "date:";
s += m.get("date");
s += " ; num:";
s += m.get("num");
s += " ; money:";
s += m.get("money");
System.out.println(s);
}
} else {
System.out.println("Result List is null");
}
}
}
6
date:20080701 ; num:101 ; money:1000
date:20080701 ; num:102 ; money:2000
date:20080701 ; num:103 ; money:
date:20080702 ; num:101 ; money:3000
date:20080702 ; num:102 ; money:
date:20080702 ; num:103 ; money: