检测list内有几组相同元素如list里有{"aaa","bbb","aaa","bbb","ccc","ccc","ccc" }
想要得出   aaa有2个,bbb有2个,ccc有3个
这样的方法有吗?

解决方案 »

  1.   

    要自己写算法吧,遍历这个List,放到HashMap中
    key就是"aaa","bbb"等,value就是数值
    String str="aaa";
    if(map.get(str)!=null)
    {
     把值取出来加+1;
     把值放进去.
    }else
    {
    直接把值放进去,value为1;
    }最后遍历map就可以.
      

  2.   

    你的List里放的什么,就是String或者是基本类型,可以用java.util.Collections中的sort方法,排个序后就好计算了。
    是其他类型对象的话就要自己写比较器,比较麻烦,还不如用2楼的方法
      

  3.   

    没有,得自己写,很简单的。(以前写的仅供参考)
    public static Map getObjectAndCountFromList(List list) {
    Map map = new HashMap();
    int position = 0;
    Collections.sort(list);
    for (int i = 1; i < list.size(); i++) {
    if (!list.get(i).equals(list.get(i - 1))) {
    map.put(list.get(i - 1), i - position);
    position = i;
    }
    }
    map.put(list.get(list.size() - 1), list.size() - position);
    return map;
    }
      

  4.   

    public class ListTest { public static void main(String[] args) {
    String[] s ={"aaa","bbb","aaa","bbb","ccc","ccc","ccc" } ;
    List list = Arrays.asList(s);
    int countA = 0;
    int countB = 0;
    int countC = 0;
    for(int i=0;i<list.size();i++){
    if("aaa".equals(list.get(i))){
    countA++;
    }if("bbb".equals(list.get(i))){
    countB++;
    }if("ccc".equals(list.get(i))){
    countC++;
    }
    }
    System.out.println(countA+"  "+countB+"  "+countC);
    }
    结果:2  2  3