List Set Queue Map
List–>(有序 可重复)
List是Collection接口的一个子接口,存在的对象是有序的,List和set接口的区别是List中的元素可以重复(可以利用set去重)
ArrayList
动态数组,查询速度快,但是在中间位置插入速度慢,线程不安全
Vector
矢量队列,和ArrayList一样,是一个动态数组,由数组实现,但是线程安全的
Stack
使用数组实现的栈,使用场景就和他的名字一样,先进后出
LinkedList
双向链表,和ArrayList相反,在中间插入数据速度很快,但是查询速度就很慢,因为要从第一个开始遍历
Set–>(无序 不可重复)
Set对象不包括相同的元素(判断两个元素是否相同时根据equals方法,只有两个元素用equals比较返回true,set就不会接受对接),如果试图把两个相同的元素加入同一个集合中,add方法会返回false,可以包含一个null元素
HashSet
哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放(当向HashSet结合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值来决定该对象在HashSet中存储位置。简单的说,HashSet集合判断两个元素相等的标准是两个对象通过equals方法比较相等,并且两个对象的hashCode()方法返回值相 等)
LinkedHashSet
HashSet的子类,也同样有HashCode值来决定元素位置。以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代
TreeSet
提供一个使用树结构存储Set接口的实现,对象以升序顺序存储,访问和遍历的时间很快
Map–>(键值对、键唯一、值不唯一)
HashMap
Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.
Hashtable
1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样 ; 2.HashTable不允许null值,key和value都不可以,HashMap允许null值,key和value都可以
TreeMap
基于红黑树实现,HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap
Queue–>(先进先出)
ArrayBlockingQueue
有界 blocking queue数组的支持。这个队列订单元素FIFO(先进先出)。 是一个典型的“有界缓冲区”,其中一个固定大小的数组是由生产者和消费者中提取的元素插入。一旦创建,无法改变的能力。试图put元素成一个完整的队列将导致操作阻塞;试图take元素从一个空的队列将同样的街区。