在进行Java开发的时候经常会用到集合,而集合又主要分为两种:Collection单列集合和Map集合。这里主要介绍一下Collection的一些常用子接口的区别。
List: Collection的子接口,特点:元素可重复,有序(存取顺序一致),可以通过索引操作元素
ArrayList:
底层结构是动态数组,查询快,增删慢,线程不安全。jdk7之前初始化容量10,jdk7之后初始化容量0,添加第一个元素容量变为10LinkedList:
底层结构是双向链表,查询慢,增删快。Vector:
底层结构是动态数组,线程安全,效率低(不推荐使用),初始化容量10Set: Collection的子接口,特点:元素唯一,部分有序,部分实现排序
HashSet:
底层结构是Hash表,元素唯一,查询和增删效率都高。LinkedHashSet:
底层结构是hash表+链表,hash表保证了操作元素的效率,链表保证了元素的有序性TreeSet:
底层结构是红黑树,实现了元素的排序,查询效率高于数组,增删效率高于链表。