集合
环境:
Idea:2019.3.1
系统:windows10 家庭版
Jdk: 8
java中文api
connection接口
jdk中的详细描述
概述:
是集合类的顶级接口
位置:
java.util.Collection
存储对象特点:
1.可重复
2.无序
List接口
jdk中的详细描述
概述:
继承Collection接口
位置:
java.util.List
存储对象特点:
1.可重复
2.有序
3.可为null
一.ArrayList
jdk中的详细描述
概述:
基于动态数组实现List接口,大致上等同于vector,只不过是非线程安全的,在随机访问时性能较高,但在插入,删除操作性能较低
位置:
java.util.ArrayList<E>
特点:
1.可变大小的数组
2.随机访问性能高,增删性能低
3.非线程安全
二.LinkedList
jdk中的详细描述
概述:
基于双链表实现List接口,还实现了Deque接口,Deque接口是Queue接口的子接口,因此,LinkedList可以作为双向队列,栈以及集合使用,因为是基于链表实现的,所以随机访问性能较低,而插入,删除操作性能很高
位置:
java.util.LinkedList<E>
特点:
1.双向链表、双向队列、栈
2.随机访问性能低,增删性能高
3.非线程安全
三.Vector
jdk中的详细描述
概述:
jdk 1.2开始实现了List接口,也是个动态数组,大致上等同于ArrayList,是线程安全的,在进行多线程的时候推荐使用,该类允许设置默认的增长长度,默认扩容方式为原来的2倍
位置:
java.util.Vector<E>
特点:
1.可变大小的数组
2.随机访问性能高,增删性能低
3.线程安全
Set接口
jdk中的详细描述
概述:
继承Collection接口
位置:
java.util.Set
存储对象特点:
1.不重复
2.无序
3.只允许最多一个null元素
一.HashSet
jdk中的详细描述
概述:
实现Set接口,由哈希表(实际上是一个 HashMap 实例)支持,底层是HashMap实现的
位置:
java.util.HashSet<E>
特点:
1.元素可为null
2.非线程安全
二.TreeSet
jdk中的详细描述
概述:
基于 TreeMap 的 NavigableSet 实现。使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序,具体取决于使用的构造方法。
位置:
java.util.TreeSet<E>
特点:
1.正常情况下元素不为null,会报错,但是可以通过传入一个比较器Comparator的构造方法来构造TreeSet,重写compare()方法的时候,对null对象进行处理就能存放null对象
2.非线程安全
3.有序
三.LinkedHashSet
jdk中的详细描述
概述:
具有可预知迭代顺序的 Set 接口的哈希表和链接列表实现。此实现与 HashSet 的不同之外在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,即按照将元素插入到 set 中的顺序(插入顺序)进行迭代。
位置:
java.util.LinkedHashSet<E>
特点:
1.元素可为null
2.非线程安全
Map接口
jdk中的详细描述
概述:
是Map集合的顶级接口,将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值
位置:
java.util.Map
存储对象特点:
1.key唯一
2.key对应的value唯一
一.HashMap
jdk中的详细描述
概述:
基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
位置:
java.util.HashMap<K,V>
特点:
1.key可为null
2.value可为null
3.非线程安全
二.TreeMap
jdk中的详细描述
概述:
基于红黑树(Red-Black tree)的 NavigableMap 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
位置:
java.util.TreeMap<K,V>
特点:
1.元素不可为null,因为需要使用key来进行自然排序
2.非线程安全
3.根据key进行有序排列,
三.LinkedHashMap
jdk中的详细描述
概述:
Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。
此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入键,则插入顺序不受影响
位置:
java.util.LinkedHashMap<K,V>
特点:
1.元素可为null
2.非线程安全
3.记录插入顺序排序
四.HashTable
jdk中的详细描述
概述:
此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。HashTable跟HashMap一样以hash数组的形式存储entry链式结构,entry链式在hash数组的位置是以key的hashcode计算的,
hashmap是key的hashcode再hash值,权又因为两个不同key的hashcode或hashcode的再hash有可能相同,所以存储在hash数组中元素的顺序无法确定的
位置:
java.util.Hashtable<K,V>
特点:
1.key不为null
2.value不为null
3.自jdk1.2起,线程安全
4.因为存储是根据key的hashcode来排序的,然而hashcode值是不确定的,并不能保证hashcode的顺序就是元素的顺序,所以无序