最全面複習---Java集合框架

最近又系統的複習了一下Java集合框架的相關知識,下面我將逐個記錄下這塊的知識。

先講講什麼是對象數組吧

對象數組:數組即可以存儲基本的數據類型,也可以存儲引用類型。它存儲應用類型的時候就叫做對象數組。

首先我們要知道,Java語言是一個面嚮對象語言,我們需要操作很多的對象,所以我們需要存儲這多個對象,我們就需要一些容器

(StringBuffer和數組),但是呢,數組的長度是固定的,不能適應變化的需求,所以java提供了集合供我們使用

集合Collection

1、集合和數組的區別

  • 長度區別
    • 數組是固定的
    • 集合是可變的
  • 內容區別
    • 數組可以是基本類型,也可以是引用類型
    • 集合只能是引用類型
  • 元素內容
    • 數組只能存儲同一種類型
    • 集合可以存儲不同的類型(其實集合一般存儲的也是同一種類型)

2、集合的繼承體系結構

學習集合框架我們一定要清楚集合的繼承體系結構,我相信不少同學都跟我一樣,學完就忘了hhh,來複習一下吧

由於需求的不同,Java給我們提供了不同的集合類,二者多個集合類的數據結構不同,但是它們都是要提供存儲和遍歷功能的

把他們的共性向上提取,最終形成了集合的繼承體系結構

  • Collection
    • List
      • ArrayList
      • Vector
      • LinkedList
    • Set
      • HashSet
      • TreeSet

上面就是集合的一個總的體系結構

3、Collection是集合的頂層接口,子體系有重複的,有唯一的,有無序的,有有序的

使用步驟:

  1. 創建集合對象
  2. 創建元素獨享
  3. 把元素添加到集合
  4. 遍歷集合
    1. 通過集合對象獲取得帶器對象
    2. 通過迭代器對象的hasNext方法判斷是否有元素
    3. 通過迭代器對象的next方法獲取元素並移動到下一個位置
功能概述:
添加功能
boolean add(Object obj):添加一個元素
boolean addAll(Collection c):添加一個集合的元素
刪除功能
void clear():移除所有元素
boolean remove(object o):移除一個元素
boolean removeAll(Collection c):移除一個集合的元素
判斷功能
boolean contains(Object c):判斷集合中是否包含指定的元素
boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
boolean isEmpty(0:判斷集合是否爲空
獲取功能
Iterator<E> iterator() 重點
迭代器,是遍歷集合的一種方式
是依賴於集合存在的
Iterator it = c.iterator()
迭代器方法:hasnext()    next()
迭代器爲什麼不定義一個類,而定義一個接口?
假設迭代器定義的是一個類,這樣我們可以創建該類的對象,調用該類的方法來實現集合的遍歷。
但是java中提供了很多的集合類,而這些集合類的數據結構是不同的,所以存儲方式和遍歷方式是不同的。
最終,就沒有定義迭代器類。
而無論你是哪種集合,你都應該具備遍歷或者獲取功能,並且最好在輔助於判斷功能,這樣在獲取前先判斷再獲取,這樣就更不容易出錯。所以判斷和獲取應該是一個集合遍歷所具備的功能,每種集合方式又不太一樣,所以提取出來這兩個功能,並不提供具體實現,這種方式就是接口
那麼真正的具體實現類在哪裏呢?
在真正的具體的子類中,以內部類的方式體現。

長度功能
int size():元素的個數
面試題:數組有沒有length()方法?沒有
字符串有沒有length()方法?有
集合有沒有length()方法?沒有
交集功能
boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪兒了,返回的boolean又是什麼意思?
7.把集合轉換爲數組
 Object[] toArray()

 

4、Collection集合的案例(遍歷方式 迭代器)

a、存儲字符串並遍歷

import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

public class CollectionDemo{
    public static void main(String[] args){
        Collection c = new ArrayList();
        c.add("hello");
        c.add("world");
        c.add("java");
        Iterator it = c.Iterator();
        while(it.hasNext()){
            String s = (String) it.next();
            System.out.println(s);
        }
    }
}

b、存儲自定義對象並遍歷

import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;
public class Student{
    private String name;
    private age;
    
    public Student(){}
    
    public Student(String name,String age){
        this.name = name;
        this.age = age;
    }
    public String getName() {
    return name;
}

    public void setName(String name) {
    this.name = name;
}

    public int getAge() {
    return age;
}

    public void setAge(int age) {
    this.age = age;
}
}

public static StudentDemo{
    public static void main(String[] args){
        Collection c = new Arraylist();
        
        Student s1 = new Student("公孫離",27);
        Student s2 = new Student("武則天",24);
        Student s3 = new Student("花木蘭",25);
        
        c.add(s1);
        c.add(s2);
        c.add(s3);
        
        Iterator it = c.iterator();
        while(it.hasNext()){
            Student s = (Student) it.next();
            System.out.println(s)
        }
    }
}

傳送門:List

傳送門:Set

    

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