Java 持有对象(11)

若是一个程序只包含固定数量且其生命周期都是已知的对象,那么这是一个很是简单的程序。java

1.泛型和类型安全的容器

  • 经过使用泛型,能够在编译期防止将错误类型的对象放置到容器中.

2.基本概念

  • Java容器类库的用途是"保存对象",并将其划分为两个不一样的概念:CollectionMap.
  • 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程序员

相关文章
相关标签/搜索