描述:
某个班级多名学生,现在需要去春游,班长提供了A,B,C,D四个景点,每个学生可以选择多个景点,请统计最终哪个景点想去的人最多。
import java.util.*;
//集合嵌套
//某个班级多名学生,现在需要组成春游活动,班长提供了A,B,C,D四个景点,每个学生可以选择多个景点,请统计出最终哪个景点想去的人最多
public class collection_5qiantao {
public static void main(String[] args) {
//使用一个Map集合存储
Map<String ,List<String>> data=new HashMap<>();//HashMap 无序
//把学生选择的数据存入进去
List<String> list=new ArrayList<>();//新建一个集合存储选择
Collections.addAll(list,"A","C");//将新建集合设为 键 ,并存入值
data.put("张三",list);//将数据插入data集合中去,键为学生姓名,值为新建集合存入的值
List<String> list2=new ArrayList<>();
Collections.addAll(list2,"B","C");//将新建集合设为 键 ,并存入值
data.put("李四",list2);//将数据插入data集合中去,键为学生姓名,值为新建集合存入的值
List<String> list3=new ArrayList<>();
Collections.addAll(list3,"A","B","C","D");//将新建集合设为 键 ,并存入值
data.put("王五",list3);//将数据插入data集合中去,键为学生姓名,值为新建集合存入的值
System.out.println(data);
//统计每个景点选择的人数
Map<String,Integer> map=new HashMap<>();
//遍历,提取所有人选择的景点的信息
Collection<List<String>> values=data.values();//取data集合中的所有的值 存入values集合
//valuse= {[B, C],[A, C],[A, B, C, D]}
for(List<String> value:values){//value指向的为[B,C]或[A,C],[A,B,C,D]的集合,所以需要再次遍历
for(String s:value){//这个时候取的便是[A,B,C,D]里的A,B,C,D
//判断有没有包含这个景点
if(map.containsKey(s)){//之前出现过这个键
map.put(s,map.get(s)+1);//重新存进去,并把原来的值取出来+1
}else{//键是第一次出现
map.put(s,1);//给键赋值为1
}
}
}
System.out.println(map);
}
}