本帖最后由 Alex_20 于 2009-07-22 01:27:39 编辑

解决方案 »

  1.   

    import java.util.*; 
    public class Test2{
    public static void main(String [] args) {
    Integer[] arr={1,1,2,2,3,3,3,4,4};
    List<Integer> myList=Arrays.asList(arr);
    HashSet<Integer> hs=new HashSet<Integer>(myList);
    for(Integer i:hs){
    System.out.println(i+" 在List中存在" + Collections.frequency(myList,i) + "个");


    }不使用第三方开源组件,5行代码搞定的事情不明白为啥弄的那么复杂,汗!
    结果如下:
    F:\java>java Test2
    1 在List中存在2个
    2 在List中存在2个
    3 在List中存在3个
    4 在List中存在2个不知道楼主和代码的结果是什么。
      

  2.   

    List里没数自己加上就是了。
    一样的结果,Bag数据结构就是用来处理这个问题的,这个问题是典型的购物车问题,我个人感觉用Bag是语义最清晰的。
      

  3.   

    2楼的用法我也知道,但是实际使用就会有问题,你每次想知道某个对象在List里到底有多少个都需要做Set转换,这本身就是低效的。
      

  4.   

    再补充一句
    你最后的那句查找效率非常的低
    System.out.println(i+" 在List中存在" + Collections.frequency(myList,i) + "个");
    这句话要遍历整个List数组,你看下Bag的源代码就知道了。
      

  5.   

    没事,兄弟。
    Java的精华都在开源组件里了。