最近总是碰到类似的问题,总感觉没有一个比较简单的办法,希望大家多多帮忙啦!!
我的想法是,利用map,key为某个元素出现的次数,value为对应的元素!!但是如果有次数相同的元素,这个方法就不好使了!!
还有个想法是,放到list里面,然后排序,感觉也不大很好!!
以int数组为例!!

解决方案 »

  1.   

    把数组中的元素循环,与字符串空做INDEXOF,如果没有就添加一个MAP KEY为数组中的元素 VALUE为次数,另字符串+数组中的元素+“,”  每次没找到就添加一个,找到了就把VALUE的值加一,这样应该好些吧
      

  2.   

    你为什么不是把 key 为某个元素, value 为出现的次数呢
      

  3.   

    如果数字限定范围,范围小的话,建议用两个数组来用,这样速度非常快。 如:int[]a={1,1,2,3,3,4,4}
                      第二个数组就有5个长度  int[]b=new int[5];
                   for(int i=0;i<a.length;i++){
                        b[a[i]]++;
                    }
            这样你在算出b数组中哪个最数最大,那么他的下标就是a数组中出现 最多次数的数了
      

  4.   

    恩,恩,这样就可以了,只要key有了,就把value加一,这样就可以了吧。
      

  5.   

    这个方法也可以,不过 int[] a = {1,1,3,4,5,6,6,5,1099785};就麻烦了
    数组b就浪费很多空间了
      

  6.   

    解决不知道长度
     可以再做for循环 查找是否和前面的相同 相同则不新加 数组元素
    不过查询浪费时间