数据结构:是数据存储时各个元素之间的关系。数组
分4种基本类型:集合、线性结构、树形结构、图状结构;安全
JDK中的集合类:List、Set、Queue、Stack、Map数据结构
基本特色:多线程
一、List/Set/Queue都继承Collection接口,Map是单独的接口线程
二、List存储类型一致数据能够保证存储的顺序,但不保证元素是否重复;code
Set存储类型一致的数据,不保证数据的存储顺序,但保证存储的元素惟一;对象
Queue保证数据先进先出的顺序;排序
Map存储key-value类型的数据,key不重复(若重复会覆盖原key对应的value值).继承
实现类:接口
ArrayList:实现List接口,是动态数组实现的顺序表。数组实现,访问速度快,占用空间小,不适合频繁的增删节点。
Vector:实现List接口,动态数组实现,元素有序,线程同步的
LinkedList:实现List接口,是基于链表实现的顺序表。链表实现,适合长度不固定、元素增删频繁时使用。
HashSet:存储元素可自动去重复,无序访问,存储对象必须实现hashcode()方法(这就是为何不能存储基本数据类型)
TreeSet:可对元素去重,保证元素的插入顺序,可对元素排序(保存的元素须要实现Comparable接口,重写compareTo方法)
HashMap:实现Map接口,是由数组+链表实现的(依据key的hash值决定在数组上的存储位置,若hash冲突时保存到链表子节点上)
WeakHashMap:继承AbstarctMap,实现Map接口;key对象弱引用
LinkedHashMap:继承HashMap,会保存数据的插入顺序
ConcurrentHashMap:实现Map接口,自带同步锁(线程安全,在多线程状况下能够使用)
HashTable:线程安全的map
TreeMap:继承AbstarctMap,实现Map接口;能够key值自动排序
Stack(栈):继承Vector;元素后进先出(有入栈和出栈操做);线程安全
Queue(队列):继承List接口;可进行出队、入队操做(LinkedList也能够实现)
ConcurrentLinkedQueue:
SynchronizedQueue:
BlockingQueue:阻塞队列,继承Queue;线程安全(可执行先进先出或后进先出操做);
子类还有ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、
SynchronousQueue
BlockingDeque:双端阻塞队列,继承BlockingQueue;
实现类有LinkedBlockingDeque
TransferQueue:继承BlockingQueue;
实现类有LinkedTransferQueue