Java 中 Set 与 List 有什么不同

时间:2018-11-14
本文章向大家介绍Java 中 Set 与 List 有什么不同,需要的朋友可以参考一下
1、Set 不允许重复,List允许重复 
2、Set 没有顺序,List有顺序 

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则是对一个数组进行类似的操作。