1. 程式人生 > >【Java學習筆記】14.集合框架和泛型

【Java學習筆記】14.集合框架和泛型

1.Java中的集合框架體系
1.集合框架體系圖如圖所示:
這裡寫圖片描述

2.Conllection介面:
Collection 是最基本的集合介面,一個 Collection 代表一組 Object,Java不提供直接繼承自Collection的類,只提供繼承於的子介面(如List和set)。

3.List介面:
List介面是一個有序的Collection,使用此介面能夠精確的控制每個元素插入的位置,能夠通過索引(元素在List中位置,類似於陣列的小標)來訪問List中的元素,而且允許有相同的元素。

4.Set:
Set 具有與 Collection 完全一樣的介面,只是行為上不同,Set 不儲存重複的元素。

5.Map:
將唯一的鍵對映到值。

2.Conllection介面
1。成員方法:

//A:新增功能
boolean add(Object obj);//往集合中新增一個元素
boolean addAll(Collection c);//往集合中新增多個元素
//B:刪除功能
void clear();//清空所有元素
boolean remove(Object o);//從集合中刪除一個元素
boolean removeAll(Collection c);//從集合中刪除另一個集合的元素
//C:判斷功能
boolean contains(Object o);//判斷集合中是否包含指定的元素
boolean containsAll(Collection c)
;//判斷集合中是否包含另一個集合的元素 boolean isEmpty();//判斷集合是否為空。 //D:交集功能 boolean retainAll(Collection c); //E:迭代器(集合特有的遍歷方式) Iterator iterator(); //F:長度功能 int size();//返回集合中元素的個數

2.迭代器的使用

//建立迭代器物件
Conllection c = new ArrayList();
Iterator it = c.iterator();
//使用迭代器遍歷
while ( it.hasNext() ) //hasNext(),判斷是否有元素
{
    //Object next()返回迭代的下一個元素,並移動指向的位置
Object o = (Object) it.next(); System.out.println(o); }

3.List集合
1.List集合的元素有序(儲存和取出順序一致),元素可重複
2.特有功能

//A:新增功能
void add(int index,Object obj);//在指定的位置新增元素
//B:刪除功能
Object remove(int index);通過指定的索引刪除元素,並把刪除的元素返回
//C:獲取功能
get(int index);// 返回列表中指定位置的元素。
//D:替換功能
Object set(int index,Object obj);

4.集合的三種遍歷
1. for迴圈遍歷

List c = new ArrayList();
for(int i=0;i<c.size();i++){
    Object o = (Object)c.get(i);
    //對o進行Object物件化操作
}

2.增強for迴圈遍歷

List l = new ArrayList();
for(Object o:l){
    Object o2 = (Object)c.get(i);
    //對o2進行Object物件化操作
}

3.迭代器迴圈遍歷

List l = new ArrayList();
Iterator it = l.iterator();
//使用迭代器遍歷
while ( it.hasNext() ) //hasNext(),判斷是否有元素
{
    Object o = (Object) it.next();
    //對o進行Object物件化操作
}

5.ArrayList與LinkedList的相同點與不同點

相同點:有順序的,元素可以重複

不同點:
(1)ArrayList特點:
底層資料結構是陣列,查詢快,增刪慢
執行緒不安全,效率高
(2)LinkedList特點:
底層資料結構是連結串列,查詢慢,增刪快
執行緒不安全,效率高

6.泛型
1.泛型:是一種把明確資料型別的工作推遲到建立物件或者呼叫方法的時候才去明確型別的特殊型別
2.格式<資料型別>
預設情況下,是Object型別。
這裡資料型別只能是引用型別。
3.好處

  1. 把執行時期問題提前到了編譯時期
  2. 避免了強制型別轉換
  3. 優化程式設計,解決了黃色警告線問題

4.在哪裡用?
一般來說就是在集合中用的多。
看API,如果類或者介面或者方法出現了<>說明這裡就有泛型