1、集合嵌套—案例引入
这里80就整成4个就行,不用太多。
package com.itheima.d3_map;
import java.util.*;
public class MapQianTao {
public static void main(String[] args) {
/**
* 1、先把学生的数据拿进程序来
* 分析:学生的名字作为键,学生的选择因为是多个,那就用list集合来存
*/
Map<String, List<String>> select = new HashMap<>();
//2、存数据
List<String> list1 = new ArrayList<>();
Collections.addAll(list1,"A","B","C");
select.put("张三",list1);
List<String> list2 = new ArrayList<>();
Collections.addAll(list2,"A","C","D");
select.put("李四",list2);
List<String> list3 = new ArrayList<>();
Collections.addAll(list3,"B","D","E");
select.put("王5",list3);
System.out.println(select); //{李四=[A, C, D], 张三=[A, B, C], 王5=[B, D, E]}
//3、生成装结果的集合
Map<String, Integer> map = new HashMap<>();
//4、遍历数据 --键值对遍历
Set<Map.Entry<String,List<String>>> set = select.entrySet();
for (Map.Entry<String, List<String>> stringListEntry : set) {
List<String> l1 = stringListEntry.getValue();
//遍历每个成员的选择,每个成员的选择是结果的键
for (String s : l1) {
if(map.containsKey(s)){
map.put(s, map.get(s)+1);// 因为集合不重复, 后面的重复的键会覆盖掉前面的
}else {
map.put(s,1);
}
}
}
//5、输出map
System.out.println(map); //{A=2, B=2, C=2, D=2, E=1}
}
}