本帖最后由 iyiman 于 2010-04-22 23:40:52 编辑

解决方案 »

  1.   

    如果用HASHMAP作比较的话,应该重写HASHCODE和EQUESE方法...这样效率要比两个循环的高很多...
      

  2.   

    其实楼主和面试官的效率几乎都一样.....但如果使用HASHCODE来比较,远远超出了嵌套循环的效率,本人从海量数据角度考虑的...
      

  3.   

    你的意思是一般不用两个循环,用两个循环效率低,但是你看看面试官使用的那个方法的代码,你就知道他实际套的循环可以算3层了。public boolean containsValue(Object value) {
    if (value == null)
                return containsNullValue(); Entry[] tab = table;
            for (int i = 0; i < tab.length ; i++)
                for (Entry e = tab[i] ; e != null ; e = e.next)
                    if (value.equals(e.value))
                        return true;
    return false;
        }
    大家评论后看看你自己有没有更好的解决方案。。
      

  4.   

    还有我刚才才发现,List有contains(Object)方法为什么要把List变成Map呢?没搞明白。。
      

  5.   

    如果只是单纯的统计相同的值 可以用HashSet啊 两个list 都往里添加一遍 两个list之和减去HashSet的长度 就是相同对象的数量了
      

  6.   


    contains这方法需要重写Object的equals不过我也不明白,为啥要放到MAP上去
      

  7.   

    Set conSet = new HashSet();
    conSet.addAll(list1);
    conSet.addAll(list2);
    System.out.println("相同的对象有:" + (list1.size()+list2.size()-conSet.size()));
      

  8.   

    同意14楼,set插入不重复元素,使用的是散列,比for循环要快速