Java迭代器

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java迭代器相关的知识,希望对你有一定的参考价值。

技术图片

package com.qf.demo02;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test3Iterator {
	public static void main(String[] args) {
		Collection<String> c1 = new ArrayList<String>();
		c1.add("aaa");
		c1.add("bbb");
		c1.add("ccc");
		
		//问题:如何获取集合中的元素?
		//方法一:for-each:增强for循环
		/*
		 * 语法原理:
		 * for(数据类型 变量名 : 数组/集合){
		 * 	打印变量名即可。
		 * }
		 */
		for(String s:c1){
			System.out.println(s);
			//aaa
			//bbb
			//ccc
		}
		
		//方法二:Iterator,迭代器,依次获取集合中的元素。。
		/*
		 * Iterator接口:
		 * 	hasNext()-->boolean,判断是否有下一个元素
		 * 	next()-->元素,获取元素
		 */
		//step1:从该集合上获取迭代器对象--->it,接口类型的
		//接口类型 =  对象
		// 接口  		  接口引用   = new 实现类对象();
		//Collection c1     = new ArrayList();
		Iterator<String> it = c1.iterator();//c1.iterator(),该方法,专门获取c1集合上的迭代器对象
		//接口类型  = 调用方法();
		
		//安装jdk1.8--->String,Object,Arrays,语法。。。Math,Random....
		//Collection接口,..add(),remove();iterator()...
		//ArrayList实现类,LinkedList,hashSet...
		
		//step2:
		//判断迭代器对象,是否有下一个元素
//		boolean b1= it.hasNext();
//		System.out.println(b1); //true
//		//A:获取迭代器后的对象,B:迭代器向后移动一下
//		String s1 = it.next();
//		System.out.println(s1);//aaa
//		
//		
//		boolean b2 = it.hasNext();
//		System.out.println(b2);//true
//		String s2 = it.next();
//		System.out.println(s2);//bbb
//		
//		boolean b3 = it.hasNext();
//		System.out.println(b3);//true
//		
//		String s3 = it.next();
//		System.out.println(s3); //ccc
//		
//		boolean b4 = it.hasNext();
//		System.out.println(b4);//false
//		
//		String s4 = it.next(); //java.util.NoSuchElementException
//		System.out.println(s4);
		
		while(it.hasNext()){//判断it后是否有下一个元素
			String s = it.next();//获取it后的这个元素,并向后移动一下。
			System.out.println("--->"+s);
		}
	
	}
}
package com.qf.demo02;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Test4Iterator {

	public static void main(String[] args) {
//		迭代器在工作期间,不要去更改集合的结构。
		Collection<String> c1 = new ArrayList<String>();
		c1.add("aaa");
		c1.add("bbb");
		c1.add("ccc");
		//---->迭代器对象
		
		System.out.println(c1);
		
		Iterator<String> it = c1.iterator();//从集合上获取的迭代器对象:it
		while(it.hasNext()){
			String s = it.next();
			System.out.println(s);
		}
		
		System.out.println("----------");
		//迭代的注意点:1.一个迭代器对象,从头迭代到后,不能再使用了,因为后面没有元素了,迭代不出来了。。
		while(it.hasNext()){
			String s2 = it.next();
			System.out.println(s2);
		}
		//2.迭代器工作期间:不能更改集合中的元素的个数。
		Iterator<String> it2 = c1.iterator();
		//it2--> aaa		bbb		ccc
		String s3 = "";
		while(it2.hasNext()){//迭代器在工作期间,相当于锁定了这个集合容器。集合本身不要去删除数据。
		
			if("bbb".equals(s3)){
//				c1.remove("bbb");//操作集合,删除一个元素:"bbb" ,java.util.ConcurrentModificationException
				it2.remove();//了解。。
			}
			s3 = it2.next();//aaa ,bbb
			System.out.println(s3);
		}
		System.out.println(c1);
	
		
	}

}

  

以上是关于Java迭代器的主要内容,如果未能解决你的问题,请参考以下文章

Java迭代器Iterator

迭代器模式(think in java中的设计模式)

Java迭代器双向链表

有没有办法在片段着色器中使用先前渲染的结果?

JAVA迭代器Iterator

java.util.Stack 的迭代器中是不是有错误?