今天再看公司代码的时候发现一个迭代器的使用。突然想到我还没有使用过迭代器,所以百度并记录一下迭代器的一般使用方法,方便以后使用。希望对大家有帮助。
迭代器(Iterator)是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:
1、使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:Iterator()方法是java.lang.Iterable接口,被Collection继承。
2、使用next()获得序列中的下一个元素。
3、使用hasNext()检查序列中的下一个元素。
4、使用remove()将迭代器新返回的元素删除。
Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
迭代器的应用:
List list=new ArrayList();
list.add("1");
list.add("2"):
list.add("3");
/*迭代器用于for循环*/
for(Iterator iterator=list.iterator();iterator.hasNext();){
String str=(String)iterator.next();
System.out.println(str);
}
/*迭代器用于while循环*/
Iterator iterator=list.iterator();
while(iterator.hasNext()){
String str=(String)iterator.next();
System.out.println(str);
}
迭代器的优缺点:
优点:1、可以快速遍历集合。
2.能够实现不重新代码就可以应用于不能的容器类型。比如说原先用的事List编码的,但是后来想把相同的代码用于Set,用迭代器将会显示特别方便。
3.ListIerator是一个更加强大的Iterator的子类型,但是它只能用于各种List类的访问。尽管Iterator只能向前移动,但是ListIterator可以双向移动。他还可以产生相对于迭代器在列表中指向当前一个和后一个元素的索引,并且还可以用set()方法替换掉它访问过的最后一个元素。你可以通过调用listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。这里就不过多的描述到ListIterator了。
迭代器的缺点:
迭代的次数取决于集合的元素数量,在删除或增加集合中的元素的时候,迭代的次数会发生变化,而向集合的非末尾的位置插入元素导致的结果会更致命,会导致先前迭代出的元素又一次访问到,或者有的元素访问不到。