我可以想象出SET相对于List的优点,但是我想不出List的优点。。还有,什么时候要使用其中一个,而不是另外一个?

解决方案 »

  1.   

    Set和List没可比性吧....
    List有序
    Set唯一当然也有实现了有序性的Set...
    哪么就是效率不同了,当然这个不容易感觉出来
      

  2.   

    LIST排序可是强项!
    对于循序加入与存取,使用Arraylist的效率很高.
      

  3.   

    List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。 Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一个数组进行类似的操作。 
      

  4.   

    看你实际需求了``List接口`是序列的,Set`是唯一的`不允许重复`
      

  5.   

    一般都用list,当你要清楚重复数据的时候用下set,一般都是这么用的。
      

  6.   

    list:有序,元素可重复
    set:无序,元素唯一性
      

  7.   

    List l = new ArrayList();
    l.add(对象);
    .
    .
    .
    .
    所以,我总结下来,有集合的地方必有Iterator进行迭代,set没有顺序,而且里面的对象不可以重复
      

  8.   

    List 和 Set 不是优缺点的问题,而是各自有不同的用处。茶杯不能坐,凳子不能装水,你能比较茶杯和凳子各有什么优缺点吗?