07.集合和泛型

不知名的菜鳥發表於2020-06-13

一.集合框架概述

Java集合框架都位於Java.util包中

Java集合框架可以包含三大塊內容,對外介面,介面的實現,對集合運算的演算法

Set、List和Map可以看做集合的三大類:

List集合是有序集合,集合中的元素可以重複,訪問集合中的元素可以根據元素的索引來訪問。

Set集合是無序集合,集合中的元素不可以重複,訪問集合中的元素只能根據元素本身來訪問。

Map集合中儲存Key-value對形式的元素,訪問時只能根據每項元素的key來訪問其value。

介面

表示集合的抽象資料型別,例如Collection,List,Set,Map等

實現

集合框架中的介面具體實現,例如ArrayList,HashSet,HashMap等

演算法

在實現了集合框架介面的物件身上完成計算的方法。Java提供了集合框架的工具類Collections,它實現了對集合排序的多種演算法。

二.List介面

ArrayList對陣列進行了封裝,實現了可變長陣列,採用和陣列相同的儲存方法。

LinkedList採用連結串列儲存方式。

ArrayList

import Java.util.List;
import java.util.ArrayList;
puoblic class ListDemo{
	public static void main(String [] args){
        List list = new ArrayList();
		for(int i=0;i<3;i++){
			list.add("Hello");
		}
		String a = (String)list.get(0);
	}
}
//List集合定義時不需要指定大小,也不用指定集合中儲存的資料型別
//List介面的add(Object o)方法的引數型別為Object,即使呼叫時傳入其他型別,但系統認為是Object型別,所以用get方法獲取元素是必須進行強制型別轉換
//獲取List集合的元素時使用get方法並傳入下標,然後強制轉化為實際型別
//使用remove,contains,indexOf等方法時應該重寫類的equals方法

三.迭代器iterator

所有集合介面和類都沒有提供相應都遍歷方法,而是把遍歷交給迭代器Iterator完成。它隱藏了各種集合實現類的內部細節,提供了遍歷集合的統一程式設計介面。

Collection介面的iterator()方法返回一個Iterator。

//Iterator介面兩個方法
boolean hasNext()//判斷是否存在另一個可訪問的元素
Object next()//返回要訪問的下一個元素

四.泛型集合

泛型有效的解決了上面提到的集合的add()方法的弊端,使用泛型集合在建立集合物件時指定集合中元素的型別,從集合中取出元素時無需進行強制型別轉換,並且如果把非指定型別物件放入集合,會出現編譯錯誤。

import java.util.ArrayList;
import java.util.List;

public class m1 {
    public static void main(String [] args){
        Student stu1 = new Student("Tom",10);
        Student stu2 = new Student("Aim",11);
        //泛型集合
        List<Student> list = new ArrayList<Student>();
        list.add(stu1);
        list.add(stu2);
        //get()方法不需要再強制型別轉換
        Student student = list.get(1);
        System.out.println("學生2:" + student.getName() + "\t" + student.getAge());
    }

}
class Student{
    String name;
    int age;
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;
    }
    public Student(String name,int age){
        this.name = name;
        this.age = age;
    }
}

相關文章