若是一个程序只包含固定数量且其生命周期都是已知的对象,那么这是一个很是简单的程序。java
1.泛型和类型安全的容器
- 经过使用泛型,能够在编译期防止将错误类型的对象放置到容器中.
2.基本概念
- Java容器类库的用途是"保存对象",并将其划分为两个不一样的概念:Collection,Map.
- Collection:一个独立元素的序列,这些元素都服从一条或多条规则.
- Map:一组成对的"键值对"对象,容许你使用键来查找值.
3.添加一组元素
- 在java.util包中的Arrays和Collections类中都有不少实用方法,能够在一个Collection中添加一组元素.
4.容器的打印
- 默认的打印行为(使用容器提供的toString()方法)便可生成可读性很好的结果.
5.List
- List承诺能够将元素维护在特定的序列中.List接口在Collection的基础上添加了大量的方法,使得能够在List的中间插入和移除元素.
- 有两种类型的List:ArrayList,LinkedList.
- ArrayList:擅长于随机访问元素,可是在List的中间插入和移除元素时比较慢.
- LinkedList:在随机访问方面相对比较慢,可是它的特性集较ArrayList更大.
6.迭代器
- 任何容器类,都必须有某种方式能够插入元素并将它们再次取回.
- 迭代器是一个对象,它的工做是遍历并选择序列中的对象,而客户端程序员没必要知道或关心该序列底层的结构.
- 迭代器一般被称为轻量级对象:建立它的代价小.
- ListIterator是一个更增强大的Iterator的子类型,它只能用于各类List的访问.
7.LinkedList
- LinkedList也像ArrayList同样实现了基本的List接口,可是它执行某些操做(在List的中间插入和移除)时比ArrayList更高效,但在随机访问操做方面却要逊色一些.
- LinkedList还添加了可使其用做栈,队列或双端队列的方法.
8.栈
- "栈"一般是指"后进先出"(LIFO)的容器.有时栈也被称为叠加栈.
- LinkedList具备可以直接实现栈的全部功能的方法,所以能够直接将LinkedList做为栈使用.
9.Set
- Set不保存重复的元素.
- Set具备与Collection彻底同样的接口,所以没有任何额外的功能.
- 实际上Set就是Collection,只是行为不一样.
- Set是基于对象的值来肯定归属性的(Set中最常被使用的是测试归属性:contains()).
10.Map
11.Queue
- Queue是一个典型的先进先出(FIFO)的容器.
- 队列在并发编程中特别重要,由于它们能够安全地将对象从一个任务传输到另外一个任务.
- LinkedList提供了方法以支持队列的行为,而且它实现了Queue接口,所以LinkedList能够用做Queue的一种实现.
- PriorityQueue:优先级队列声明下一个弹出元素就是最须要的元素(具备最高的优先级).
12.Collection和Iterator
- Collection是描述全部序列容器的共性的跟接口,它可能会被认为是一个"附属接口",即由于要表示其余若干个接口的共性而出现的接口.
- 容器之间的共性是经过迭代器达成的,而不是Collection来表示.可是,这个两个方法绑定到了一块儿,由于实现Collection就意味着须要提供iterator()方法.
13.Foreach与迭代器
- Java SE5引入了新的被称为Iterable的接口,该接口包含一个可以产生Iterator的iterator()方法,而且Iterable接口被foreach用来在序列中移动.
- 在Java SE5中,大量的类都是Iterable类型,主要包括全部的Collection类(可是不包括各类Map).
- 适配器方法的惯用法.
END程序员