使用map判断数组中的重复元素和个数,以及不重复元素的个数

编写程序随机生成一个100个整数元素(元素小于100)的数组,然后计算出这100个元素中有多少个不重复的元素?每个元素分别重复了多少次?
思路分析
1、循环数组,添加到map中
2、因为map存储的是键值对,同时键值不能重复,所以我们把数组中的元素当做键,个数当做值。
代码如下

public class Test {
    public static void main(String[] args) {
       int[] arr = {2,5,3,4,7,1,9,1,7,4,5,2,7};
        test1(arr);
    }
    /**
     *  查找数组里重复的元素,每个元素出现几次
     */
    public static void test1(int[] arr){
        Map<Integer, Integer> map = new HashMap<>();
        //循环数组,添加到map
        //定义两个计数器
        int count1 = 0;
        int count2 = 0;     //记录有多少重复的元素
        for (int i = 0; i < arr.length; i++) {
            boolean flag = true;
            //如果map中没有这个数(key),put(值,1)
            if(map.containsKey(arr[i])){
                int val = map.get(arr[i]);
                //有的话加1
                map.put(arr[i],val+1);
                count1++;
            }else{
                map.put(arr[i],1);
            }
            if(count1>1){
                count2++;
            }
        }

        System.out.println(map);
        System.out.println("有"+(arr.length-count1-count2)+"个不重复的元素");
    }
}

在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
面试题目: 1-10题: 1、java中==和equals和hashCode的区别 2、int与integer的区别 3、String、StringBuffer、StringBuilder区别 4、什么是内部类?内部类的作用 5、进程和线程的区别 6、final,finally,finalize的区别 7、Serializable 和Parcelable 的区别 8、静态属性和静态方法是否可以被继承?是否可以被重写?以及原因? 9、成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用 10、string 转换成 integer的方式及原理 11-20题: 11、哪些情况下的对象会被垃圾回收机制处理掉? 12、静态代理和动态代理的区别,什么场景使用? 14、Java中实现多态的机制是什么? 16、说说你对Java反射的理解 17、说说你对Java注解的理解 18、Java中String的了解 19、String为什么要设计成不可变的? 20、Object类的equal和hashCode方法重写,为什么? 21-40题 21、List,Set,Map的区别 26、ArrayMap和HashMap的对比 29、HashMap和HashTable的区别 30、HashMap与HashSet的区别 31-40题 31、HashSet与HashMap怎么判断集合元素重复? 33、ArrayList和LinkedList的区别,以及应用场景 34、数组和链表的区别 35、开启线程的三种方式? 36、线程和进程的区别? 38、run()和start()方法区别 39、如何控制某个方法允许并发访问线程的个数? 40、在Java中wait和seelp方法的不同 41-50题 41、谈谈wait/notify关键字的理解 42、什么导致线程阻塞?线程如何关闭? 43、如何保证线程安全? 44、如何实现线程同步? 45、线程间操作List 46、谈谈对Synchronized关键字,类锁,方法锁,重入锁的理解 49、synchronized 和volatile 关键字的区别 51-58题 51、ReentrantLock 、synchronized和volatile比较 53、死锁的四个必要条件? 56、什么是线程池,如何使用? 56、什么是线程池,如何使用? 58、有三个线程T1,T2,T3,怎么确保它们按顺序执行?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值