Java中的集合是很重要的知识点,下面就详细的整理出各种集合的特性和常见用法;
首先介绍下Collection单列集合和Map集合的集成体系:
Collection单列集合的集成体系
Map双列集合的集成体系
下面就详细的去了解这些集合的用法
集合可以分为单例集合和双列集合
单列集合:Collection
List(有序,可重复)
ArrayList:底层数据结构是数组,查询快,增删慢, 线程不安全,效率高
LinkedList:底层数据结构是链表,查询慢,增删快, 线程不安全,效率高
Vector: 底层数据结构是数组,查询快,增删慢, 线程安全,效率低
Set(无序,不可重复)
HashSet:
1:底层数据结构是哈希表; 2:哈希表依赖两个方法hashCode(),equals();3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。
LinkedHashSet:
1:底层数据结构由哈希表和链表组成 ; 2:链表保证了元素的有序 ;3:哈希表保证了元素唯一
TreeSet:
1.底层数据结构是红黑树;2.保证元素的唯一是根据比较的返回值是否为0来判断的;3.两种排序方式:自然排序:让元素所属的类实现comparable接口;选择器排序:让集合接收一个comparator的实现类对象
双列集合:Map
HashMap
1:底层数据结构是哈希表 线程不安全,效率高; 2:哈希表依赖两个方法hashCode(),equals(); 3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。
LinkedHashMap
1:底层数据结构由哈希表和链表组成 ; 2:链表保证了元素的有序 ;3:哈希表保证了元素唯一 。
TreeMap
1.底层数据结构是红黑树;2.保证元素的唯一是根据比较的返回值是否为0来判断的;3.两种排序方式:自然排序:让元素所属的类实现comparable接口;选择器排序:让集合接收一个comparator的实现类对象。
HashTable
1:底层数据结构是哈希表 线程安全,效率低 ;2:哈希表依赖两个方法hashCode(),equals(); 3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。
注意:
1:Map集合的数据结构是对键有效,与值无关
2:存储的是键值对形式的元素,键唯一,值可重复
集合的使用情形:看需求是怎样的,根据需求来选择合适的集合来使用;下面就列出常见情况使用哪一种集合
1.看是否是键值对形式,是就用Map ,不是就用Collection
2.为键值对是排序就用 TreeMap,不排序就使用 HashMap
3.不是键值对形式时,如果需要安全就用 Vector,不要安全就用 ArrayList或LinkedList ;如果增删多就使用 LinkedList ;查询多就使用 ArrayList;