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迭代器的主要内容,如果未能解决你的问题,请参考以下文章