List和Set的区别:
1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 ,实现类有HashSet,TreeSet。
3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 ,实现类有ArrayList,LinkedList,Vector,CopyOnWriteArrayList。 ArrayList与Vector的区别: - 两者都是基于索引,内部结构是数组
- 元素存取有序并都允许为null
- 都支持fail-fast机制
- Vector是同步的,不会过载,而ArrayList不是,但ArrayList效率比Vector高,如果在迭代中对集合做修改可以使用CopyOnWriteArrayList
- 初始容量都为10,但ArrayList默认增长为原来的50%,而Vector默认增长为原来的一倍,并且可以设置
- ArrayList更通用,可以使用Collections工具类获取同步列表和只读列表
ArrayList与LinkedList的区别: - 两者都是List接口的实现类
- ArrayList是基于动态数组的数据结构,而LinkedList是基于链表的数据结构
- 对于随机访问get和set(查询操作),ArrayList要优于LinkedList,因为LinkedList要移动指针
- 对于增删操作(add和remove),LinkedList优于ArrayList
ArrayList与LinkedList的适用场景:
当需要对数据进行对此访问的情况下选用ArrayList,当需要对数据进行多次增加删除修改时采用LinkedList
|