Java Iterator 接口简介和简单用法.
生活随笔
收集整理的這篇文章主要介紹了
Java Iterator 接口简介和简单用法.
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Iterator 的中文意思是迭代器. ?
單單從中文翻譯也不易理解迭代器的意思啊, ?其實Iterator是1個接口, ?它的作用就是遍歷容器的所有元素.
一, Iterator 接口簡介
Iterator 是為了實現對java容器(collection)進行遍歷功能的1個接口.我們定義iterator (首字母小色) 是實現了Iterator 接口的1個對象.
首先iterator 實現了Iterator接口后, 相當于把1個Collection容器的所有對象, 做成1個線性表(List) . 而iterator本身于1個指針.
這個指針一開始是位于 第1個元素之前的. 如下圖 ?
下面介紹2個Iterator接口內最主要的三個方法.
1.1 boolean hasNext();
判斷iterator 內是否存在下1個元素, 如果存在返回true, 否則返回false.注意, 這時上面的那個指針位置不變.
1.2 Object next();
返回iterator 內下1個元素, 同時上面的指針向后移動一位.如下圖:
可見, 如果不斷地循環執行next()方法, 就可以遍歷容器內所有的元素了.
1.3 void remove();
刪除iterator?內指針的前1個元素, ?前提是至少執行過1次next(); ?這個方法不建議使用, 建議使用容器本身的romove方法.
二, Iterator 接口的意義
我們知道, 遍歷1個ArrayList 和 Linklist 是十分容易的. ?遍歷1個Tree容器也不難, ?但是實現機制是完全不同.
而遍歷1個Set容器就無從下手了.
所以Java 設計了Iterator這個接口, ?分別讓各種容器自己去重寫里面的hasNext() 和 next()方法.
所以我們不用關心各種容器的遍歷機制, ?只要使用Iterator , ?會讓人覺得各種容器的遍歷方法都是一樣的, 這也是java接口的重要意義.
三, ?如何使用 Iterator?
但是在java的各種容器內, 例如ArrayList, HashSet等, 并沒有直接實現Iterator這個接口.
所以ArrayList, HashSet容器內是沒有 hasNext(), next()的方法的.
而是具有 iterator() 這個方法, 返回1個實現了Iterator 接口的 iterator 對象.
注意區別啊.
下面是1個簡單例子, 遍歷1個HashSet
import java.util.HashSet; import java.util.Iterator;class Student{private int id;private String name;public Student(int id, String name){this.id = id;this.name = name;}//overwritepublic String toString(){return this.id + ":" + this.name;}//overwrite hashCode()public int hashCode(){return id * name.hashCode();}//overwrite equals()public boolean equals(Object o){Student s = (Student)o;return (s.id == this.id) && (s.name.equals(this.name));}}public class Iterator1{public static void f(){HashSet hs = new HashSet();hs.add(new Student(1,"Jack"));hs.add(new Student(2,"Bill"));hs.add(new Student(3,"Alice"));hs.add(new Student(4,"Cici"));Student st;Iterator it = hs.iterator(); //Polywhile (it.hasNext()){st = (Student)(it.next());System.out.println(st);} }}
輸出: [java] 2:Bill[java] 1:Jack[java] 4:Cici[java] 3:Alice
總結
以上是生活随笔為你收集整理的Java Iterator 接口简介和简单用法.的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 容器之Hashset 详解.
- 下一篇: Java 里的HashMap(HashT