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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.