Java集合的專有遍歷方式 迭代器遍歷

2021-08-20 02:19:11 字數 1438 閱讀 3020

[問題引入]

需求:儲存自定義物件並遍歷

有5個學生,學生有姓名,年齡,遍歷5個學生,輸出5個學生對應的資訊(集合改進)

分析:1)建立乙個學生類

2)在測試類中,建立集合物件

3)建立5個具體學生物件,並且新增集合中

4)將集合轉換陣列

5)遍歷

6)輸出

public static void main(string args) 

}

上述toarray()方法轉換成陣列非常麻煩,並且也不是集合的專有遍歷方式,實際還是陣列遍歷!

所以,引入集合的專有遍歷方式:迭代器遍歷

(1)iterator iterator() :集合的迭代器方法(獲取集合的迭代器)

集合的專有遍歷方式:迭代器遍歷

iterator :介面中有以下的方法:

boolean hasnext() :如果有元素可以迭代,那麼返回true,否則返回false

object next()返回迭代的下乙個元素

[需求1]儲存string型別的元素並遍歷

public static void main(string args) 

}

[需求2]儲存自定義物件並遍歷(使用專有遍歷方式)

public static void main(string args) 

}

注意:

1)it.next(),只使用一次即可,使用多次,會出現問題(it.next(),每次使用的時候都是返回乙個物件)

2)遍歷的時候使用的while迴圈,可不可以使用for迴圈呢?

可以,但是很少使用!

for(iterator it = c.iterator() ; it.hasnext();)
(2)迭代器的原始碼分析

inte***ce iterator

inte***ce iterable

inte***ce collection extends iterable

inteface list extends collection

class arraylist implements list

private class itr implements iterator

public object next()

}}

分析:

1)iterator it = c.iterator() ;   //介面多型的形式

實際起作用的是介面iterable中的iterator()方法!

返回值是乙個介面,需要它的子實現類物件!

2)iterator它的子實現類是什麼呢?

實現類:是一種匿名的內部類,上述原始碼中itr這個類就是iterator的子實現類

集合,迭代器遍歷集合,巢狀集合

什麼是集合?集合有兩個父介面 collection 和 map collection有兩個子介面 list 和 set list 子介面有兩個常用的實現類arraylist和linkedlist 儲存的資料的方式是有序不唯一的 arraylist其實可以理解為乙個可變長度的陣列,可以通過索引訪問相對...

Java集合遍歷

集合提供了乙個迭代器來遍歷其所有元素。迭代器可以對集合執行 檢查是否有尚未訪問的元素。hasnext 訪問集合中的下乙個元素。next 刪除集合的最後訪問元素。remove remove 方法刪除next 方法最後返回的元素。每次呼叫next 方法只能呼叫一次remove 方法。如果對於每個next...

java 集合迭代器

使用方法iterator要求容器返回iterator,iterator將準備返回序列的第乙個元素。將使用next 獲得虛類的下乙個元素,使用hasnext檢查序列中是否還有元素。使用remove將迭代器新近返回 的元素刪除。iterator可以 移除由next產生的最後乙個元素,所以remove之前...