Java容器迭代器(学习java编程思想笔记)

一 Iterator

迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或者关心该序列底层的结构。此外,迭代器通常被称为轻量级对象:创建它的代价很小。
跟Iterator相关的一些方法:
1.使用Collection的方法iterator()要求容器返回一个Iterator.
2.使用next()获得序列中的下一个元素。
3.使用hasNext()检查序列中是否还有元素。
4.使用remove()方法将迭代器新近返回的元素删除。

import java.util.*;

import pets.Pet;
import pets.Pets;

public class SimpleIteration {
public static void main(String[] args) {
  
List pets = Pets.arrayList(12);

//从集合处获得Iterator对象
Iterator it = pets.iterator();

//hasNext():判断集合中是否还有元素
while(it.hasNext()) {
  //next():获得集合的下一个元素
  Pet p = it.next();
  System.out.print(p.id() + ":" + p + " ");
}

System.out.println();

//使用foreach循环遍历集合
for(Pet p : pets)
  System.out.print(p.id() + ":" + p + " ");

System.out.println();   

it = pets.iterator();
for(int i = 0; i < 6; i++) {
 //remove():删除由next()产生的最后一个元素,因此执行本方法时,必须先调用next()方法
  it.next();
  it.remove();
}
System.out.println(pets);
}
}
/* Output:
0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 8:Cymric 9:Rat 10:EgyptianMau 11:Hamster
0:Rat 1:Manx 2:Cymric 3:Mutt 4:Pug 5:Cymric 6:Pug 7:Manx 8:Cymric 9:Rat 10:EgyptianMau 11:Hamster
[Pug, Manx, Cymric, Rat, EgyptianMau, Hamster]
*/  

看到这里我们对于集合的遍历就有了下面的一些方法:
1.使用迭代器对集合进行遍历
2.使用foreach循环对集合进行遍历
3.使用for循环对集合进行遍历

二 ListIterator

ListIterator是一个更加强大的Iterator的子类型,它只能用于各种List类的访问。尽管Iterator只能向前移动,但是ListIterator可以双向移动。它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素,你可以通过listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用iistIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。

import java.util.*;

import pets.Pet;
import pets.Pets;

public class ListIteration {
public static void main(String[] args) {
  
List pets = Pets.arrayList(8);

//获得序列的线性迭代器
ListIterator it = pets.listIterator();

while(it.hasNext())
  System.out.print(it.next() + ", " + it.nextIndex() +
    ", " + it.previousIndex() + "; ");

System.out.println();

//由后向前遍历,hasPrevious():序列中是否存在元素
//previous():获得序列中的上一个元素。
while(it.hasPrevious())
  System.out.print(it.previous().id() + " ");

System.out.println();

System.out.println(pets);   
//获得从下标3开始的线性迭代器
it = pets.listIterator(3);
while(it.hasNext()) {
  it.next();
  it.set(Pets.randomPet());
}
System.out.println(pets);
}
}
/* Output:
Rat, 1, 0; Manx, 2, 1; Cymric, 3, 2; Mutt, 4, 3; Pug, 5, 4; Cymric, 6, 5; Pug, 7, 6; Manx, 8, 7;
7 6 5 4 3 2 1 0
[Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Manx]
[Rat, Manx, Cymric, Cymric, Rat, EgyptianMau, Hamster, EgyptianMau]
*/

你可能感兴趣的:(Java容器迭代器(学习java编程思想笔记))