1. 程式人生 > >Iterator和新增for迴圈

Iterator和新增for迴圈

在這裡插入圖片描述
(1)迭代器並非是容器,它的功能是遍歷容器。

(2)要想遍歷,必須知道容器的確切型別,然後編碼進行遍歷,不同的容器有不同的遍歷方式,但是如果使用迭代器的話,就不需要知道容器的型別,因為可以用一種方式遍歷容器中的物件

一、Iterator介面

1、

在這裡插入圖片描述

(1)集合是對Collection介面進行遍歷,這個介面中,有Iterator方法,所以實現Collection介面的容器都有一個iterator方法

(2)

  • 有沒有下一個元素
  • 取下一個元素
  • 邊遍歷刪除元素

2、例項1(輸出,但是不刪除)

在這裡插入圖片描述

(1)用的是HashSet介面型別的,然後新增物件,進行遍歷。

(2)c.iteartor,c中的有iteartor方法,但是動態繫結,呼叫的是HashSet中的iterator方法,返回值就是一個物件的引用,這個物件實現了對HashSet的遍歷,是對HashSet進行遍歷的迭代器,這個物件的型別和類名是什麼不知道,但是一定實現了Iterator介面。

(3)通過c進行遍歷,如果有下一個元素的話,取下一個元素,進行遍歷。

(4)這種迭代器只能前移,不能後移,因為,迭代器剛返回的時候,指向第一個元素之前,所以要訪問第一個元素,先得next,之後前移獲得第一個元素,再next,之後前移獲得第二個元素,依次類推。


3、例項2(邊遍歷邊刪除)

在這裡插入圖片描述

(1)刪除的時候,為什麼不用容器刪除呢?而是用Iterator中的remove方法呢?因為,容器在遍歷的時候,有索引,刪除物件的話,有影響,保證不了正確性。


4、新增for迴圈

在這裡插入圖片描述

(1)通過編譯器優化,自動將arr中的值從0開始,逐漸賦值給i,然後打印出來

在這裡插入圖片描述