erator iterator():迭代器,集合的專用遍歷方式 9 * Object next():獲取元素,并移動到下一個位置, 10 * NoSuchElementException:沒有這樣的元素,因為你已經找到最后了, 11 * boolean hasNext():如果仍有元素可以迭代,則回傳 true,---進行判斷的陳述句
整體演示代碼
注意:如果接受的物件是一個介面---則實際回傳的肯定是子類的物件---多型--代碼26行
集合的使用步驟
A:創建集合物件
B:創建元素物件
C:將元素添加到集合物件
D:進行迭代器的遍歷
E:利用集合物件,創建迭代器物件
F:利用迭代器物件的hasNext()來進行遍歷元素的判斷
G:利用迭代器物件的next()方法來進行獲取遍歷的資料
1 package cn.itcast_03; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 7 /* 8 * Iterator iterator():迭代器,集合的專用遍歷方式 9 * Object next():獲取元素,并移動到下一個位置, 10 * NoSuchElementException:沒有這樣的元素,因為你已經找到最后了, 11 * boolean hasNext():如果仍有元素可以迭代,則回傳 true,( 12 */ 13 public class IteratorDemo { 14 public static void main(String[] args) { 15 // 創建集合物件 16 Collection c = new ArrayList(); 17 18 // 創建并添加元素 19 // String s = "hello"; 20 // c.add(s); 21 c.add("hello"); 22 c.add("world"); 23 c.add("java"); 24 25 // Iterator iterator():迭代器,集合的專用遍歷方式 26 Iterator it = c.iterator(); // 實際回傳的肯定是子類物件,這里是多型 27 28 // Object obj = it.next(); 29 // System.out.println(obj); 30 // System.out.println(it.next()); 31 // System.out.println(it.next()); 32 // System.out.println(it.next()); 33 // System.out.println(it.next()); 34 // 最后一個不應該寫,所以,我們應該在每次獲取前,如果有一個判斷就好了 35 // 判斷是否有下一個元素,有就獲取,沒有就不搭理它 36 37 // if (it.hasNext()) { 38 // System.out.println(it.next()); 39 // } 40 // if (it.hasNext()) { 41 // System.out.println(it.next()); 42 // } 43 // if (it.hasNext()) { 44 // System.out.println(it.next()); 45 // } 46 // if (it.hasNext()) { 47 // System.out.println(it.next()); 48 // } 49 // if (it.hasNext()) { 50 // System.out.println(it.next()); 51 // } 52 53 // 最終版代碼 54 while (it.hasNext()) { 55 // System.out.println(it.next()); 56 String s = (String) it.next(); 57 System.out.println(s); 58 } 59 } 60 }
自定義物件通過迭代器進行遍歷
1 package Day15; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 7 /* 8 * Iterator iterator():迭代器,集合的專用遍歷方式 9 * Object next():獲取元素,并移動到下一個位置, 10 * NoSuchElementException:沒有這樣的元素,因為你已經找到最后了, 11 * boolean hasNext():如果仍有元素可以迭代,則回傳 true,( 12 * */ 13 //練習:用集合存盤5個學生物件,并把學生物件進行遍歷,用迭代器遍歷, 14 public class Lx2 { 15 public static void main(String[] args) { 16 //首先創建集合物件 17 Collection ss = new ArrayList(); 18 19 //創建五個學生類物件 20 Student2 A = new Student2("小明",23); 21 Student2 B = new Student2("小蘭",24); 22 Student2 C = new Student2("小黑",25); 23 Student2 E = new Student2("小白",26); 24 Student2 F= new Student2("小紫",27); 25 26 //向集合物件內添加這五個同學的資訊 27 ss.add(A); 28 ss.add(B); 29 ss.add(C); 30 ss.add(E); 31 ss.add(F); 32 33 //進行使用集合專用的遍歷--迭代遍歷 34 //Iterator iterator():迭代器,集合的專用遍歷方式 35 Iterator SM = ss.iterator(); 36 //Object next():獲取元素,并移動到下一個位置, 37 //Object sss =SM.next(); 38 // System.out.println(sss); 39 //進行回圈遍歷輸出--并提供其判斷的條件---boolean hasNext():如果仍有元素可以迭代,則回傳 true,( 40 while(SM.hasNext()){ 41 //進行型別的轉化--來呼叫學生類中的方法操作獲取 42 //將獲取的集合中的資料進行型別轉化為Student2型別的資料--相當于創建了一個學生類物件 43 Student2 M = (Student2) SM.next(); 44 System.out.println(M.getName()+"---"+M.getAge()); 45 46 //System.out.println(SM.next()); 47 } 48 } 49 }
迭代器遍歷注意的問題:
1 package cn.itcast_03; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Iterator; 6 7 /* 8 * 問題1:能用while回圈寫這個程式,我能不能用for回圈呢? 9 * 問題2:不要多次使用it.next()方法,因為每次使用都是訪問一個物件, 10 */ 11 public class IteratorTest2 { 12 public static void main(String[] args) { 13 // 創建集合物件 14 Collection c = new ArrayList(); 15 16 // 創建學生物件 17 Student s1 = new Student("林青霞", 27); 18 Student s2 = new Student("風清揚", 30); 19 Student s3 = new Student("令狐沖", 33); 20 Student s4 = new Student("武鑫", 25); 21 Student s5 = new Student("劉曉曲", 22); 22 23 // 把學生添加到集合中 24 c.add(s1); 25 c.add(s2); 26 c.add(s3); 27 c.add(s4); 28 c.add(s5); 29 30 // 遍歷 31 Iterator it = c.iterator(); 32 while (it.hasNext()) { 33 Student s = (Student) it.next(); 34 System.out.println(s.getName() + "---" + s.getAge()); 35 36 // NoSuchElementException 不要多次使用it.next()方法 37 // System.out.println(((Student) it.next()).getName() + "---" 38 // + ((Student) it.next()).getAge()); 39 40 } 41 // System.out.println("----------------------------------"); 42 43 // for回圈改寫 44 // for(Iterator it = c.iterator();it.hasNext();){ 45 // Student s = (Student) it.next(); 46 // System.out.println(s.getName() + "---" + s.getAge()); 47 // } 48 } 49 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445888.html
標籤:其他
上一篇:執行緒池的極簡用法——內置執行緒池multiprocessing
下一篇:動態規劃(DP)
