一、需求
某个班级多名学生,现在需要组成秋游活动,班长提供了四个景点依次是(A、B、C、D) ,每个学生可以选择多个景点,请统计出最终哪个景点想去的人数最多。
二、分析
●将80个学生选择的数据拿到程序中去,需要记住每个学生选择的情况。
●定义Map集合用于存储最终统计的结果。
三、具体步骤
(1))要求记录每个学生选择的情况,而每个学生的选择又有多种,故使用一个Map集合嵌套一个List集合存储学生的选择。
(2)把学生选择的数据存入进去。
(3)统计每个景点选择的人数。
(4)提取所有人选择的景点的信息。
(5)使用两个for循环遍历,内层遍历学生选择的景点,外层遍历不同的学生。
四、代码
public static void main(String[] args) {
//1.要求程序记录每个学生选择的情况。
//使用一个Map集合存储。
Map<String, List<String>> data = new HashMap<>();
//2.把学生选择的数据存入进去。
List<String> selects = new ArrayList<>();
Collections.addAll(selects,"A","C");
data.put("小王",selects);
System.out.println(data);
//{小王=[A, C]}
List<String> selects1 = new ArrayList<>();
Collections.addAll(selects1,"A","B","D");
data.put("小刘",selects1);
System.out.println(data);
//{小刘=[A, B, D], 小王=[A, C]}
List<String> selects2 = new ArrayList<>();
Collections.addAll(selects2,"A","B","C","D");
data.put("小红",selects2);
System.out.println(data);
//{小刘=[A, B, D], 小王=[A, C], 小红=[A, B, C, D]}
// 3、统计每个景点选择的人数。
Map<String,Integer> infors = new HashMap<>();
//4.提取所有人选择的景点的信息。
Collection<List<String>> values = data.values();
System.out.println(values);
//values = [[A, B, D],[A, C],[A, B, C, D]]
for (List<String> value : values) {
for (String s : value) {
//有没有包含这个景点
if (infors.containsKey(s)){
infors.put(s,infors.get(s) +1 );
}else {
infors.put(s,1);
}
}
}
System.out.println(infors);
//{A=3, B=2, C=2, D=2}
}