如果一个程序只包含固定数量且其生命周期都是已知的对象,那么这是一个非常简单的程序。
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。