public static void main(String[] args) {
Map<String, Map<String, String>> map = new HashMap<>();
List<Dep> deps = new ArrayList<>();
deps.add(new Dep("张三","2018-07","10"));
deps.add(new Dep("张三","2018-06","43"));
deps.add(new Dep("李四","2018-06","53"));
deps.add(new Dep("王五","2018-07","37"));
String[] dates = new String[deps.size()];
int count = 0;
for(Dep d : deps) {
Map<String, String> temps = map.get(d.name);
if(temps == null) {
temps = new HashMap<>();
map.put(d.name, temps);
}
temps.put(d.date, d.count);
String date = d.date;
dates[count ++] = d.date;
}
System.out.println("map--->>"+map);
Set<String> set = new HashSet<>();
for (int i = 0; i < dates.length; i ++) {
set.add(dates[i]);
}
dates = (String[]) set.toArray(new String[set.size()]);
Map<String, List<String>> result = new HashMap<>();
for(Map.Entry<String, Map<String, String>> entry : map.entrySet()) {
List<String> tempList = result.get(entry.getKey());
if(tempList == null) {
tempList = new ArrayList<>();
result.put(entry.getKey(), tempList);
}
Map<String, String> tempMap = entry.getValue();
for(String s : dates) {
tempList.add(tempMap.get(s));
}
}
System.out.println("result--->>"+result);
}
static class Dep {
private String name;
private String date;
private String count;
Dep(){
}
Dep(String name, String date, String count){
this.name = name;
this.date = date;
this.count = count;
}
}
输出结果:
map--->>{李四={2018-06=53}, 张三={2018-06=43, 2018-07=10}, 王五={2018-07=37}}
result--->>{李四=[53, null], 张三=[43, 10], 王五=[null, 37]}
本文介绍了一个使用Java进行数据处理的案例,通过构建嵌套Map和List结构来组织和展示不同人员在不同日期的数据记录。首先定义了Dep类来存储姓名、日期和计数等属性,然后创建了集合来存储这些数据,并最终将数据整理成指定格式输出。
636

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



