深秋---JAVA 泛型

泛型
泛型就是在創建對象的時候 給泛型 賦類型
特點:
1.增強了代碼的安全性
2.省去的強制轉換的麻煩
泛型還可以把在編譯器上不會顯示的錯誤 在編譯器上顯示出來
避免了編譯通過卻運行不通過時 尋找bug的麻煩

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

這樣就最簡單的聲明一個集合 並且這個集合的類型是String類型的
正向遍歷和逆向遍歷


ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
ListIterator<String> listIterator = list.listIterator();
        //正向遍歷
        while (listIterator.hasNext()) {
            String next = listIterator.next();
            System.out.println(next);
        }
            //逆向遍歷
        while (listIterator.hasPrevious()) {
            String previous = listIterator.previous();
            System.out.println(previous);

想要逆向遍歷就必須先要正向遍歷
因爲next就相當於一個指針 每一次正向遍歷 指針就會指向後一個數
而逆向遍歷每一次就會指向前一個數
而在未遍歷之前系統默認指向的是最前方的數
這時逆向遍歷就會找不到元素 誤以爲是個空的集合

泛型的接口
通配符:
? extends E
?—>子類
E—>父類

? super E
?—>父類
E—>子類

int ...
int ...相當於是一個數組 所以要在要另外在集合中添加int類型的參數時 需要寫在int ...的前面 寫在後面會被默認爲是int ...數組中的一個元素

刪除的三種方式(遍歷的三種方式)
1.普通遍歷
如果集合中有”b”就刪除它

ArrayList<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
for(int i = 0, i < strings.size(); i++){
    if(strings.get(i).equals("b")){
    strings.remove(i--);
    }
    System.out.println(strings.get(i));
}

2.迭代器刪除

ArrayList<String> strings = new ArrayList<>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
Iterator<String> iterator = strings.iterator();
while(iterator.hasNext()){
    if(iterator.next().equals("b")){
    iterator.remove();
    }
}
System.out.println(strings);

3.增強for循環遍歷集合
(一般只用來打印 不做刪除的操作)

ArrayList<String> strings = new ArrayList<String>();
strings.add("a");
strings.add("b");
strings.add("c");
strings.add("d");
for(String string : strings){
    System.out.println(string);
}

集合的嵌套
在一個集合的<>中寫上另一個集合
例:
創建一個學科 這個學科有兩個班 每個班有兩個學生

ArrayList<ArrayList<Student>> subjects = new ArrayList<>();
ArrayList<Student> classes1 = new ArrayList<>();
classes1.add(new Student("小明",18));
classes1.add(new Student("小紅",17));
ArrayList<Student> classes2 = new ArrayList<>();
classes2.add(new Student("小黑", 16));
classes2.add(new Student("小光", 15));
subjects.add(classes1);
subjects.add(classes2);
for(ArrayList<Student> classes : subjects){
    for(Student student : classes){
    System.out.println(student);
    }
}

Collection中的sort(list)方法
這個方法時系統提供的排序方法
但 按什麼規則排序 系統不知道
系統會提供一個接口 你去實現這個接口
在接口中 寫上排序規則

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