Java核心API -- 7(Iterator迭代器、Comparable、Comparator比較器)

1. Iterator迭代器

    所有Collection的實現類都實現了iterator方法,該方法返回一個Iterator接口類型的對象,用於實現對集合元素迭代的便利。在java.util包下。

    1)Iterator定義有三個方法:

        ①boolean hasNext()方法:判斷指針後面是否有元素。

        ②E next()方法:指針後移,並返回當前元素。E代表泛型,默認爲Object類型。

        ③void remove()方法:在原集合中刪除剛剛返回的元素。

    2)對於List集合而言,可以通過基於下標的get方法進行遍歷;而iterator方法是針對Collection接口設計的,所以,所有實現了Collection接口的類,都可以使用Iterator實現迭代遍歷。

    3)迭代器的使用方式:先問後拿。問:boolean hasNext()該方法詢問迭代器當前集合是否還有元素;拿:E next()該方法會獲取當前元素。迭代器的迭代方法是while循環量身定製的。

    4)迭代器中的刪除問題:在迭代器迭代的過程中,我們不能通過“集合”的增刪等操作,來改變該集合的元素數量!否則會引發迭代異常!若想刪除迭代出來的元素,只能通過Iterator。迭代器在使用自己的remove()方法時,可以將剛剛獲取的元素從集合中刪除,但是不能重複調用兩次!即在不迭代的情況下,不能在一個位置刪兩次。


    案例9:

        wKiom1WNFvKxg5yAAAKAJAVZKSg077.jpg


2. Comparable和Comparator接口

    (1) Comparable接口:Comparable接口用於表示對象間的大小關係,我們需要實現Comparable接口,並重寫compareTo()方法定義比較規則。

    (2) Collections.sort()方法:需要集合中的對象實現Comparable接口,從而可以調用其compareTo方法判斷對象的大小,否則sort將無法判斷。該方法會依次調用集合中每個元素的compareTo方法,並進行自然排序。 


    案例10:

        wKiom1WNGamyEHIoAAHq91rkzY0951.jpg

        wKioL1WNG36ztdQWAAGE_hyCnB0496.jpg

        wKiom1WNGfTSb2eSAABZfC9wijE684.jpg


    (3) Comparator接口:比較器。一旦Java類實現了Comparable,其比較邏輯就已經確定了,如果希望在排序中的操作按照“臨時指定規則”,即自定義比較規則。可以採用Comparator接口回調方式。使用匿名類方式創建一個實例來定義比較器的方式很常見。

    Comparator比較器創建步驟:

        ①定義一個類並實現Comparator接口。

        ②實現接口中的抽象方法compare(E o1,E o2)。

        ③實例化這個比較器

        ④調用Collections的重載方法:sort(Collection c,Comparator comparator)進行排序。


    案例11:

        wKioL1WNG9uxf7NNAAJZkNLZPlo765.jpg


3. Collection和Collentions的區別

    Collection是java.util下的接口,它是各種集合的父接口,繼承於它的接口主要有Set 和List;

   Collections是個java.util下的類,是針對集合的幫助類,提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章