一、容器
很多时候,程序总是根据运行时才知道的某些条件去创建新对象,在此之前不知道所需对象的数量,甚至对象的类型,这时就需要容器来保存对象。Java容器类可以自动地调整自己的尺寸。容器类类库可以划分为两个不同的概念:
- Collection。一个独立元素的序列,如List(按照插入顺序保存元素),Set(不能有重复元素),Queue(按排队规则确定对象产生的顺序);
- Map。一组成对的“键值对”对象,允许用键来查找值。Map维护了一张映射表,也叫“关联数组”或“字典”。
有两种类型的List,都是按被插入的顺序保存元素:
- ArrayList,随机访问元素比较快,但是在List中间插入和移除元素比较慢;
- LinkedList,在随机访问元素比较慢,但是在List中间插入和移除元素比较快,提供了优化的顺序访问。
Stack,“栈”,是个“后进先出(LIFO)”的容器,最后一个压入栈的元素,第一个弹出栈。LinkedList具有能够直接实现栈的所有功能的方法,可以将LinkedList作为栈使用。
二、迭代器
迭代器是一个对象,工作是遍历并选择序列中的对象,而客户端程序员不必知道该序列底层的结构,即不管序列结构是ArrayList、LinkedList还是HashSet,都可以用迭代器来遍历序列。Iterable接口包含一个能产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,所以如果创建了任何Iterable的类,都可以用于foreach语句中,Collection类(但不包括Map)都是Iterable类型,Map得先用entrySet()方法产生一个由Map.Entry的元素构成的Set,由于Set是一个Iterable,所以可以用foreach循环。
最后看一下Java容器的简图,黑框的是常用的容器。
时间: 2024-10-31 21:51:47