java學習筆記(6)——Iterator 迭代器

Iterator 接口

java.util.Itertor接口
迭代,是Collection集合元素的通用獲取方式
Iterator也是有泛型的!!
先判斷集合中有沒有元素,有就取出來,再繼續判斷,再繼續取,直至所有取出。
boolean hasNext()
判斷是否有元素java

next()
有元素,則取出元素
remove()數組

獲取實現類的方式:
Collection接口中有個方法,iterator(),這個方法返回的就是迭代器的實現類對象。
Iterator也是有泛型的!!迭代器的泛型跟着集合走,集合什麼泛型,迭代器什麼泛型安全

1.使用集合中的方法iterator()獲取迭代器的實現類對象,使用Iterator接口接收(多態);
2.使用Iterator接口中的方法hasNext判斷是否有下一個元素;
3.使用Iterator接口中的方法next取出集合中的下一個元素。
Collection<String> coll = new ArrayList<>();

        coll.add("2");
        coll.add("da");
        coll.add("2ue");

        Iterator<String> it = coll.iterator();

        while (it.hasNext()) {
            String s = it.next();

            System.out.println(s);
        }

實現原理:
獲取迭代器實現類對象,並把指針指向集合的-1索引ide

Iterator<String> it = coll.iterator();

next();
除了取出下一個元素,而且將指針向後移動一位。this

加強for循環

底層使用的也是迭代器,使用for循環的格式,簡化了迭代器的書寫
用來遍歷集合和數組
格式:
for(集合/數組的數據類型 變量名: 集合名/數組名) {指針

sout(變量名);

}code

ArrayList<String> s2 = new ArrayList<>();

        s2.add("dsd");
        s2.add("222");
        s2.add("34e");
        for (String s :s2) {
            System.out.println(s);
        }

泛型

一種未知的數據類型,不知道使用什麼類型的數據就用泛型
是一個變量,能夠接收變量對象

建立集合對象的時候,就會肯定泛型的數據類型索引

建立集合對象,不使用泛型:
好處:接口

默認類型是Object類型,能夠存儲任意類型的數據

弊端:

不安全,引起異常(出現多種數據類型,並且不能使用多態,就是不能使用某類特有的方法,須要向下轉型,這時候存在不一樣的數據類型,向下轉型時會出現異常)

建立集合對象,使用泛型:
好處:

避免了類型轉化的麻煩
把運行期異常(代碼運行以後會拋出的異常),提高到了編譯期(寫的時候就拋出的)

弊端:

泛型是什麼類型,就只能存儲什麼類型的數據

定義泛型類:

public class Person<E> {
    private E name;

    public Person() {
    }
    public Person(E name) {
        this.name = name;
    }
}

定義含有泛型的方法:

泛型定義在方法的修飾符和返回值類型之間
格式:
修飾符 <泛型> 返回值類型 方法名(參數列表(使用泛型)) {

方法體;

}

含有泛型的方法,在調用方法的時候肯定泛型的數據類型
傳遞什麼參數,泛型就是什麼類型

public <M> void method(M m) {
        System.out.println(m);
    }
public static <S> void method1(S s) {
        System.out.println(s);
    }

含有泛型的接口:

格式:

public interface Iterator<E> {
    E next();
}

使用方式1:定義接口的時候就把類型註明

接口:
public interface Person2<String> {
    public abstract void method(String i);
}
實現類:
public class Person implements Person2<String>{

    @Override
    public void method(String s) {
        
    }
}

使用方式2:接口使用什麼泛型,實現類就使用什麼泛型至關於定義一個含有泛型的類

相關文章
相關標籤/搜索