Java集合框架都位於Java.util包中java
Java集合框架能夠包含三大塊內容,對外接口,接口的實現,對集合運算的算法算法
List集合是有序集合,集合中的元素能夠重複,訪問集合中的元素能夠根據元素的索引來訪問。編程
Set集合是無序集合,集合中的元素不能夠重複,訪問集合中的元素只能根據元素自己來訪問。數組
Map集合中保存Key-value對形式的元素,訪問時只能根據每項元素的key來訪問其value。框架
表示集合的抽象數據類型,例如Collection,List,Set,Map等工具
集合框架中的接口具體實現,例如ArrayList,HashSet,HashMap等this
在實現了集合框架接口的對象身上完成計算的方法。Java提供了集合框架的工具類Collections,它實現了對集合排序的多種算法。code
ArrayList對數組進行了封裝,實現了可變長數組,採用和數組相同的儲存方法。對象
LinkedList採用鏈表儲存方式。blog
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完成。它隱藏了各類集合實現類的內部細節,提供了遍歷集合的統一編程接口。
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; } }