迭代器和增强for
Posted maplesu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器和增强for相关的知识,希望对你有一定的参考价值。
增强for
内部原理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作。
格式:
for(元素的数据类型 变量 : Collection集合or数组){
}
它用于遍历Collection和数组。通常只进行遍历元素,不要在遍历的过程中对集合元素进行增删操作。
* foreach:增强for循环,一般用于遍历集合或者数组
* 格式:
* for(元素的类型 变量 : 集合或者数组对象) {
* 可以直接使用变量;
* }
注意:在增强for循环中不能修改集合,否则会出现并发修改异常。
foreach比迭代器遍历集合的优势在于代码更加的简洁,更不容易出错,不用关心下标的起始值和终止值。
迭代器
1. Iterator专门用于对集合进行遍历使用的
* 2. 哪些集合可以使用迭代器进行遍历?
* Collection: 可以
* List: 可以
* Set: 可以
* Map: 不可以* Map-->Set
//使用迭代器遍历ArrayList集合 Iterator<String> listIt = list.iterator(); 21 while(listIt.hasNext()){ 22 System.out.println(listIt.hasNext()); 23 } 24 //使用迭代器遍历Set集合 25 Iterator<String> setIt = set.iterator(); 26 while(setIt.hasNext()){ 27 System.out.println(listIt.hasNext()); 28 } 29 //使用迭代器遍历LinkedList集合 30 Iterator<String> linkIt = linkList.iterator(); 31 while(linkIt.hasNext()){ 32 System.out.println(listIt.hasNext()); 33 }
void remove();//移除元素 }
1. Iterator专门用于对集合进行遍历使用的
* 2. 哪些集合可以使用迭代器进行遍历?
* Collection: 可以
* List: 可以
* Set: 可以
* Map: 不可以* Map-->Set
* 3. Iterator , 是一个接口, 调用itertator()可以得到该接口类型的对象
* 在集合定义中, 有实现了Iterator接口的内部类的集合, 可以使用迭代器
* 实现了Iterable接口的集合可以使用迭代器进行遍历
*
* 4. Iterator: 接口, 迭代器, 用于对集合(Collection)进行遍历
* Iterable: 接口, 有一个抽象方法叫iterator(), 返回结果是一个Iterator对象(前提是在集合中定义了内部类, 该类实现了Iterator接口)
* iterator(): 源头是Iterable接口, 返回一个迭代器对象
*
* 5. foreach, 增强for循环, jdk1.5之后可以使用
* foreach循环底层使用了迭代器的方式
*
* 6. foreach和迭代器Iterator的区别
* foreach可以遍历数组, 迭代器不能遍历数组;
*
* 7. 迭代器中的方法
* hasNext(): 用于判断迭代器中是否还有下一个元素, 有返回true, 没有返回false
* next(): 用于获取下一个元素
* remove(): 删除元素
* 前提是必须先调用next方法, 而且remove方法只能在next方法后被调用一次, 否则, 抛出异常: IllegalStateException
* 统一个迭代器只能被使用一次, 使用一次之后, 指针已经指向末尾了, 再调用hasNext方法时, 返回false
以上是关于迭代器和增强for的主要内容,如果未能解决你的问题,请参考以下文章