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

}

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