package com.bjpowernode.demo01;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* Collection集合的迭代,获得集合迭代器之后不能通过集合的add()/remove()/clear()等方法修改集合的结构,否则可能引用异常
* @author Administrator
*
*/
public class Test03 {
public static void main(String[] args) {
//1)创建Collection集合,存储String
Collection<String> collection = new ArrayList<>();
//2) 添加元素
collection.add("jj");
collection.add("mm");
collection.add("mm");
collection.add("dd");
collection.add("DD");
//3)直接打印 , 调用ArrayList的tostring()
System.out.println( collection ); //[jj, mm, mm, dd, DD]
//4)foreach遍历, 注意foreach仅仅用于遍历
for (String str : collection) {
//把collection集合中的每个 元素依次赋值给局部变量str
System.out.print( str + "\t");
}
System.out.println();
//5)迭代
//5.1获得迭代器对象
Iterator<String> iterator = collection.iterator();
/*
* 每个迭代器都有一个游标, 最开始指向 集合第一个元素的前面
* hasNext()判断是否还有没方法的元素
* next()返回下个元素, 把游标下移
*/
//5.2迭代集合中的每个元素
while( iterator.hasNext() ){
String nextStr = iterator.next();
System.out.println(nextStr);
}
//注意,while循环完毕, iterator游标已经指向最后一个元素的后面了
//如果还想使用iterator迭代, 需要重新获得新的迭代器
iterator = collection.iterator();
/*
* 6) collection.remove( object ) 只能移除第一个匹配的元素
* 如果想要删除集合中所有 匹配的元素时, 可以通过迭代删除
*/
while (iterator.hasNext()) {
String string = iterator.next();
if ( "mm".equals(string)) {
iterator.remove(); //迭代删除
//注意,获得了集合的迭代器之后 , 如果再通过集合的add()/remove()/clear()等方法修改了集合的结构,可能引用异常
// collection.remove("mm"); //java.util.ConcurrentModificationException
}
}
System.out.println(collection); //[jj, dd, DD]
//重新获得迭代器
iterator = collection.iterator();
//修改了集合的结构, 添加了元素
collection.add("dd");
collection.add("DD");
//以面再使用 迭代器访问集合元素时, 可能引用异常
while (iterator.hasNext()) {
String string = (String) iterator.next();
System.out.println( string );
}
}
}
java基础回顾之集合----Collection
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.