怎么样知道数组里有多少相同的数据,并把这些相同的数据相加。
例如:ArrayList 里有{789,6,77,789,109,77...};
请写下源码啊。谢谢了各位

解决方案 »

  1.   

    public static void main(String[] args) {
    //new Excle();
    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(10);
    list.add(10);
    list.add(19);
    list.add(19);
    list.add(19);
    list.add(7);
    list.add(98); int sum=0;
    int m=0;//记录相等的数目
    //除掉重复的,减少遍历次数
    HashSet<Integer> hs = new HashSet<Integer>();
    hs.addAll(list);
    for(Integer i:hs){
    System.out.println("i="+i);
    for(Integer j:list){
    if(i==j){//相等
    m++;
    }
    }
    if(m>=2){//说明有重复的
    sum+=i;
    }
    m=0;
    }
    System.out.println("sum="+sum);
    }
      

  2.   

    楼上代码效率低, 应该先排序后判断
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;public class Test {

    public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(new Integer(1));
    list.add(new Integer(4));
    list.add(new Integer(13));
    list.add(new Integer(13));
    list.add(new Integer(13));
    list.add(new Integer(2));
    list.add(new Integer(3));
    list.add(new Integer(3));
    list.add(new Integer(3));
    list.add(new Integer(4));
    list.add(new Integer(0));

    Collections.sort(list);

    Iterator<Integer> i = list.iterator();

    int oi = 0;

    int flag = 0;

    int count = 1;



    while(i.hasNext()){
    int ni = i.next().intValue();
    if(flag!=0){
    if(ni - oi ==0){
    count++;
    }else{
    if(count!=1){
    System.out.println("数'"+oi+"'出现了"+count+"次");
    count = 1;
    }

    }
    }
    flag ++;
    if(flag==list.size()){
    if(count!=1){
    System.out.println("数'"+ni+"'出现了"+count+"次");
    }
    }
    oi = ni ;
    }

    }

    }