需求:
某个班级80名学生,现在需要组成秋游活动, 班长提供了四个景点依次是(故宫、天安门、圆明园、长城), 每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。
思路:
四个景点放入一个集合,放入80次,就需要创建一个ArrayList集合(有序,不唯一)来存储,统计哪个景点的票数最多就需要创建一个HashMap或TreeMap(无序,唯一)来存储,将每一个景点设为key,将每个景点投票次数设为value。
1.先将四个景点随机放入ArrayList集合中,放入80次
String[] arr = {"故宫","天安门","圆明园","长城"};
Random random = new Random();
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < 80; i++) {
int index = random.nextInt(arr.length);
list.add(arr[index]);
}
2.创建HashMap存储数据:key——四个景点,value——四个景点出现的次数
HashMap<String, Integer> hashMap = new HashMap<>();
// 存储Key和Value
for (String key :
list) {
if (hashMap.containsKey(key)) {
Integer value = hashMap.get(key)+1;
hashMap.put(key,value);
}else {
hashMap.put(key,1);
}
}
3.遍历hashMap集合并找出最大值
int max = 0;
for (String key :
hashMap.keySet()) {
System.out.println(key+":"+hashMap.get(key));
if(max <= hashMap.get(key)){
max = hashMap.get(key);
}
}
for (String key :
hashMap.keySet()) {
if(max == hashMap.get(key)){
System.out.println("票数最多的是:"+key+",共"+max+"票");
}
}
控制台输出: