Java容器的用途是“保存对象”,并将其划分为两个不同概念。
(1) Collection:一个对立的元素序列,这些元素都服从一条或多条规则。List必须按照插入的顺序保存元素,而Set不能有重复元素。Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序相同)。
(2) Map:一组成对的“键值对”对象,允许使用键来查找值。ArrayList允许使用数字查找值,因此从某种意义上讲,他将数字与对象关联在了一起。映射表允许我们使用另一个对象来查找某个对象,它也被成为“关联数组”,因为它将某些对象与另外一些对象关联在了一起;或者被称为“字典”。
Collection:
-
List:
- ArrayList:随机访问较快,但在List的中间插入和移除元素时较慢。
- LinkedList:在List的中间插入和移除元素较快,随机访问较慢,特性集较ArrayList更大。
-
Set:
- HashSet:查询速度最快,但无序。
- TreeSet:按比较结果的升序保存对象。
- LinkedHashSet:按添加顺序保存对象。
Map:
- HashMap:查询速度最快。
- TreeMap:按比较结果的升序保存键。
- LinkedHashMap:按插入顺序保存键。
迭代器:
Java的Iterator只能单向移动,这个Iterator只能用来:
- 使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。
- 使用next()获得序列中的下一个元素。
- 使用hasNext()检查序列中是否还有元素。
- 使用remove()将迭代器新近返回的元素删除。
Iterator的真正威力:能够将遍历序列的操作与序列底层的结构分离。
ListIterator:Iterator的子类型,它只能用于各种List类的访问,但ListIterator可以双向移动。它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素。
网友评论