valueList

timeList

根据两个list比对获取这样的数据
以timeList为基准,把valueList的值合并到新的List,valueList中没有的值设为0

public class ComOrder {
private List<Map<String, Integer>> valueList = new ArrayList<Map<String, Integer>>();
private List<String> timeList = new ArrayList<String>();
public ComOrder() {
init();
}
/**
* 数据初始化
*/
private void init() {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("2019-01-21", 5);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-21", 3);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-21", 1);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-21", 4);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-22", 2);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-22", 5);
valueList.add(map);
map = new HashMap<String, Integer>();
map.put("2019-01-22", 1);
valueList.add(map);
timeList.add("2019-01-21");
timeList.add("2019-01-22");
timeList.add("2019-01-23");
timeList.add("2019-01-24");
timeList.add("2019-01-25");
timeList.add("2019-01-26");
timeList.add("2019-01-27");
}
/**
* 合并排序
* @return
*/
public List comp() {
List<Map<String, Integer>> targetList = new ArrayList<Map<String, Integer>>(); //最后合并的list
while (!valueList.isEmpty()) {
for (String s: timeList) { //遍历timelist,timelist的每个key都不能在一轮循环中丢失
Integer v = 0; //日期对应的值,默认为0
for (Map<String, Integer> map : valueList) {
if (map.containsKey(s)) {//取得日期对应的值
v = map.get(s); //给v赋值,循环外添加到map,list中
valueList.remove(map);//valueList清除刚才找到的map,避免死循环且重复计算
break; //找到对应值,退出循环
}
}
Map<String, Integer> map = new HashMap<String, Integer>();
map.put(s, v);
targetList.add(map);
}
}
return targetList;
}
/**
* 打印
* @param list
*/
public void print(List<Map<String, Integer>> list) {
for (Map<String, Integer> map : list) {
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getValue() + "," + entry.getKey());
}
}
}
public static void main(String[] args) {
ComOrder comOrder = new ComOrder();
List targetList = comOrder.comp();
comOrder.print(targetList);
}
}


1130

被折叠的 条评论
为什么被折叠?



