迭代器和增强for
迭代器的演示
迭代器的创建
集合.iterator(); 返回一个Iterator<引用类型>
遍历时删除修改,会引发并发修改异常
异常:ConcurrentModificationException
产生原因:
解决异常
//删除演示:
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器创建
Iterator<String> iterator = list.iterator();
//循环
//快捷键:itit
while (it.hasNext()) {
String s = it.next();
//判断之后删除
if(s.equals("常家壮")){
it.remove(); //删除当前元素
}
}创建迭代器如下演示:
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器创建
Iterator<String> iterator = list.iterator();方法 | 说明 |
|---|---|
E next() | 获取集合中的元素 |
boolean hasNext() | 判断集合中有没有下一个元素 |
void remove() | 删除当前元素 |
public class Texitit {
public static void main(String[] args) {
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//迭代器遍历集合
Iterator<String> iterator = list.iterator();
//用迭代器遍历数组 如果用idea 快捷键:itit
while (iterator.hasNext()) {
String next = iterator.next();
System.out.println(next);//输出遍历结果
}
}
}public boolean hasNext() {
return cursor != size;
}
public E next() {
checkForComodification();
int i = cursor;
if (i >= size){
throw new NoSuchElementException();
}
Object[] elementData = ArrayList.this.elementData;
if (i >= elementData.length){
throw new ConcurrentModificationException();
}
cursor = i + 1;
return (E) elementData[lastRet = i];
}提到迭代器就不得不说,增强for,增强for它的实现就是用的迭代器
增强for使用比迭代器简单
增强for底层是迭代器,当在遍历时删除修改,也会出现并发异常
作用
格式
for(元素类型 元素名 : 集合/数组){
代码;
}代码演示
public class TexitFor {
public static void main(String[] args) {
//创建Arraylist 集合
ArrayList<String> list = new ArrayList<>();
//添加集合
list.add("CSDN");
list.add("常家壮");
list.add("博客");
//增强for实现遍历
for (String s : list) {
System.out.println(s);//打印集合元素
}
}
}