javaSE——集合练习题

需求:

        某个班级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+"票");

            }
        }

控制台输出:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值