Java迭代器
阿新 • • 發佈:2020-07-25
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); } }