//实现目标 选择课程:张三选择语文,李四选择数学,王五选择英语,小明选择物理,小红选择语文,小花选择英语, //将各个科目对应的人员列出来 语文:张三、小红 数学:李四 英语:王五、小花 物理:小明
List<Map<String,Object>> mapList = new ArrayList<>();//此过程可以从数据库查询
Map<String,Object> map = new HashMap<>();
map.put("name","张三");
map.put("subject","语文");
mapList.add(map);
Map<String,Object> mapOne = new HashMap<>();
mapOne.put("name","李四");
mapOne.put("subject","数学");
mapList.add(mapOne);
Map<String,Object> mapTwo = new HashMap<>();
mapTwo.put("name","王五");
mapTwo.put("subject","英语");
mapList.add(mapTwo);
Map<String,Object> mapThree = new HashMap<>();
mapThree.put("name","小明");
mapThree.put("subject","物理");
mapList.add(mapThree);
Map<String,Object> mapFour = new HashMap<>();
mapFour.put("name","小红");
mapFour.put("subject","语文");
mapList.add(mapFour);
Map<String,Object> mapFive = new HashMap<>();
mapFive.put("name","小花");
mapFive.put("subject","英语");
mapList.add(mapFive);
System.out.println("mapList-----"+mapList);
//将数据取出来,存放到Map
Map<String,List<String>> listMap = new HashMap<>();
for (int i = 0 ; i<mapList.size();i++){
listMap.computeIfAbsent((String) mapList.get(i).get("subject"),k ->new ArrayList<>())
.add((String)mapList.get(i).get("name"));
}
//存放处理后的数据
Map<String,Object> objectMap = new HashMap<>();
//循环获取map中的key和value
Set<Map.Entry<String,List<String>>> entrySet = listMap.entrySet();
for (Map.Entry<String,List<String>> entry : entrySet){
String key = entry.getKey();
List<String> stringList = entry.getValue();
objectMap.put(key, StringUtils.join(stringList,"、"));
}
System.out.println("objectMap-----"+objectMap);
输出结果
加入mapList集合的数据
mapList-----[
{subject=语文, name=张三},
{subject=数学, name=李四},
{subject=英语, name=王五},
{subject=物理, name=小明},
{subject=语文, name=小红},
{subject=英语, name=小花}
]
得到最终的结果
objectMap-----{物理=小明,
数学=李四,
语文=张三、小红,
英语=王五、小花
}