java基礎回顧之集合----Collection

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 );
		}
		
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章