一.集合框架概述
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;
}
}