JAVA容器类类库的用途是 "保存对象",并将其划分为两个不一样的概念:
数组
1) Collection。一个独立元素的序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能用重复元素。Queue按照排队规则来肯定对象产生的顺序(一般与它们被插入的顺序相同)
ide
2)Map。一组成对的 "键值对" 对象,容许你使用键来查找值。ArrayList容许你使用数字
测试
Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),并将其转换为一个List对象。Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分割的列表,将元素添加到Collection中。
优化
List
对象
由两种基本类型的List:
blog
基本的ArrayList,它长于随机访问元素,可是在List的中间插入和移除元素时较慢。
排序
LinkedList,它经过代价较低的List中间进行的插入和删除操做,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢,可是它的特性集较ArrayList更大。
接口
Stack:"栈"一般是指"后进先出" (LIFO)的容器。Stack能够基于LinkedList实现
队列
Set
rem
Set不保存重复的元素。Set中最常被使用的是测试归属性,你能够很容易地询问某个对象是否在某个Set中。正因如此,查找就成为了Set中最重要的操做,所以你一般都会选择一个HashSet的实现,它专门对快速查找进行了优化。TreeMap基于红黑树,有序。LinkedHashSet基于链表,有序。
Map
将对象映射到其它对象
Queue
队列是一个典型的先进先出(FIFO)的容器。即从容器的一端放入事物,从另外一端取出。队列常被当作一种可靠的将对象从程序的某个区域传输到另外一个区域的途径。
LinkedList提供了方法以支持队列的行为,而且它实现了Queue接口,所以LinkedList能够用做Queue的一种实现。经过将LinkedList向上转型为Queue。
PriorityQueue
优先级队列声明下一个弹出的元素是最须要的元素(具备最高的优先级)。当你在PriorityQueue上调用offer(0方法插入一个对象时,这个对象会在队列中被排序。默认的排序将使用对象在队列中的天然排序,可是你能够经过提供本身的Comparator来修改这个顺序。PriorityQueue能够确保当你调用peek(), poll()和remove()方法时,获取的元素将是队列中优先级最高的元素。
集合图