现有两个List如下:
①list1中map已经按照date,num排好序。
List<Map<String, String>> list1
key = "date", value = "20080701" ; key = "num", value = "101" ; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102" ; key = "money", value = "2000"
key = "date", value = "20080702" ; key = "num", value = "101" ; key = "money", value = "3000"②list2中map已经按照num排好序。
List<Map<String, String>> list2
key = "num", value = "101"
key = "num", value = "102"
key = "num", value = "103"需要生成如下List(list1中的date 与list2中的num 进行组合,如果在list1中不存在该组合,放置到合适的位置)
List<Map<String, String>> list3
key = "date", value = "20080701" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102"; key = "money", value = "2000"
key = "date", value = "20080701" ; key = "num", value = "103"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080702" ; key = "num", value = "102"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "103"; key = "money", value = ""
请大家帮个忙。
①list1中map已经按照date,num排好序。
List<Map<String, String>> list1
key = "date", value = "20080701" ; key = "num", value = "101" ; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102" ; key = "money", value = "2000"
key = "date", value = "20080702" ; key = "num", value = "101" ; key = "money", value = "3000"②list2中map已经按照num排好序。
List<Map<String, String>> list2
key = "num", value = "101"
key = "num", value = "102"
key = "num", value = "103"需要生成如下List(list1中的date 与list2中的num 进行组合,如果在list1中不存在该组合,放置到合适的位置)
List<Map<String, String>> list3
key = "date", value = "20080701" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102"; key = "money", value = "2000"
key = "date", value = "20080701" ; key = "num", value = "103"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080702" ; key = "num", value = "102"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "103"; key = "money", value = ""
请大家帮个忙。
楼主【smartpoko】截止到2008-07-29 11:48:59的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:100 每贴平均分数:100
回帖的总数量:79 得分贴总数量:45 回帖的得分率:56%
结贴的总数量:1 结贴的总分数:100
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
new Comparable(){
public int compareTo(Object o) { return 0;
}};
排序
list3.addAll(list1);
list3.addAll(list2);
key = "date", value = "20080701" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102"; key = "money", value = "2000"
key = "date", value = "20080701" ; key = "num", value = "103"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "101"; key = "money", value = "3000"
key = "date", value = "20080702" ; key = "num", value = "102"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "103"; key = "money", value = ""
那里就应该是1000,注意value="101"
key = "date", value = "20080701" ; key = "num", value = "101"; key = "money", value = "1000"
key = "date", value = "20080701" ; key = "num", value = "102"; key = "money", value = "2000"
key = "date", value = "20080701" ; key = "num", value = "103"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "101"; key = "money", value = "3000"
key = "date", value = "20080702" ; key = "num", value = "102"; key = "money", value = ""
key = "date", value = "20080702" ; key = "num", value = "103"; key = "money", value = ""不好意思,这个才是正确的,手误
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: