象集合ArrayList中有数1,2,1,3,4,3,3,2,3
那出现次数最多的是数字3。有没有效率比较高的方法?

解决方案 »

  1.   

    先用quicksort排序,然后从第一个开始往下比,找出来最多的那个.
    我能想到的就这些了,关注,up!
      

  2.   


    public class SearchMax 

    static void max(int i[]) 
    {int maxvalue=0; 
    int count=0; boolean printnum=false; 
    for(int j=0;j<i.length;j++)//找出最大数 

    if(maxvalue<i[j]) 
    {
    maxvalue=i[j];

    }//for 
    System.out.println("最大数"+maxvalue+""); for(int k=0;k<i.length;k++) 

    if(maxvalue==i[k]) 
    {
    count++; 
    if(count==1)
    {
    System.out.println("最大数位置"+k);//找出最大数的位置
    }
    else
    {
    continue; 
    }
    for(int z=k+1;z<i.length;z++)
    {
    if(maxvalue==i[z])
    {
    int c=z-k;
    System.out.println("从最大数开始计算的"+c);//从最大数开始计算的
    System.out.println("从数组第一位开始数的"+z);//从数组第一位开始数的
    }


    }

    }} System.out.print("最大数出现的次数 "+count+"\n");//最大数出现的次数 

    public static void main(String args[]) 

    int m[]={6,7,5,6,4,7,5,5}; 
    max(m); 


    ///我也是个菜鸟算法不是很好,忘见解
      

  3.   

    ArrayList list = new ArrayList();
    //put data to list
    ....
    //排序
    Collections.sort(list);
    //输出最多值.备注:如果有并列的情况就复杂一些。
    System.out.println(list.get(list.size()-1));