[問題引入]
需求:儲存自定義物件並遍歷
有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之前...