JavaSE基礎知識分享(七)

ikestu小猪發表於2024-08-15

寫在前面

前面講的是物件導向中的常用類部分,下面讓我們來看看java中集合這部分的內容!在本文的最後給大家發一個題目,便於複習Java物件導向部分的知識!

集合

資料結構

  • 棧和佇列

  • 陣列和連結串列


  • 雜湊表


  • 本部分知識太多,就不一一列舉了。
    瞭解更多

泛型

  • 泛型類
    格式:public class 類名<泛型型別1,…>
    注意:泛型型別必須是引用型別。

  • 泛型方法
    格式:public <泛型型別> 返回型別 方法名(泛型型別 引數)

  • 泛型介面
    格式:public interface 介面名<泛型型別1,…>

  • 泛型萬用字元 <?>

    • <?> 任意型別,若沒有明確,就是 Object 及任意 Java 類。
    • <? extends E> 向下限定,E 及其子類。
    • <? super E> 向上限定,E 及其父類。

兩大繼承體系

Collection 介面

  • 成員方法

  • boolean add(E e)

    • 作用:將指定的元素 e 新增到集合中。如果集合中尚不存在該元素,成功新增返回 true;如果集合中已經存在該元素,則返回 false
    • 返回值true 如果元素成功新增,false 如果元素已存在。
  • boolean remove(Object o)

    • 作用:從集合中移除指定的元素 o。如果集合中存在該元素,移除成功返回 true;如果集合中不存在該元素,則返回 false
    • 返回值true 如果元素成功移除,false 如果元素不存在。
  • void clear()

    • 作用:移除集合中的所有元素,使集合變為空。
    • 返回值:無返回值。
  • boolean contains(Object o)

    • 作用:檢查集合是否包含指定的元素 o。如果集合中存在該元素,則返回 true;否則返回 false
    • 返回值true 如果集合包含指定的元素;false 如果集合不包含該元素。
  • boolean isEmpty()

    • 作用:檢查集合是否為空。如果集合中沒有任何元素,則返回 true;否則返回 false
    • 返回值true 如果集合為空;false 如果集合包含元素。
  • int size()

    • 作用:返回集合中元素的數量。
    • 返回值:集合中元素的數量(一個整數)。
  • Object[] toArray()

    • 作用:返回包含集合中所有元素的陣列。陣列的型別為 Object[]
    • 返回值:包含集合中所有元素的陣列。
  • <T> T[] toArray(T[] a)

    • 作用:返回包含集合中所有元素的陣列。如果提供的陣列 a 足夠大,元素將被儲存在該陣列中;否則,建立一個新的陣列來儲存元素。
    • 返回值:包含集合中所有元素的陣列。如果提供的陣列 a 足夠大,則返回 a;否則返回新建立的陣列。
  • Iterator<E> iterator()

    • 作用:返回集合中元素的迭代器,可以透過迭代器遍歷集合中的元素。
    • 返回值:集合中元素的 Iterator
  • boolean containsAll(Collection<?> c)

    • 作用:檢查集合是否包含指定集合 c 中的所有元素。如果集合中包含 c 中的所有元素,則返回 true;否則返回 false
    • 返回值true 如果集合包含所有 c 中的元素;false 如果不包含。
  • boolean addAll(Collection<? extends E> c)

    • 作用:將指定集合 c 中的所有元素新增到當前集合中。如果當前集合由於新增而發生了變化,則返回 true;否則返回 false
    • 返回值true 如果集合發生變化;false 如果集合未發生變化。
  • boolean removeAll(Collection<?> c)

    • 作用:從當前集合中移除指定集合 c 中的所有元素。如果當前集合由於移除而發生了變化,則返回 true;否則返回 false
    • 返回值true 如果集合發生變化;false 如果集合未發生變化。
  • boolean retainAll(Collection<?> c)

    • 作用:保留當前集合中與指定集合 c 中的元素相同的元素,移除所有其他元素。如果當前集合由於移除而發生了變化,則返回 true;否則返回 false
    • 返回值true 如果集合發生變化;false 如果集合未發生變化。
  • 子介面

    • List 介面

      • 特點:元素有序且可以重複,有索引下標。
      • 子類
        • ArrayList

          • 底層資料結構:陣列
          • 優點:查詢快
          • 缺點:增刪慢,執行緒不安全
          • 執行緒安全實現:使用泛型和 synchronized 關鍵字修飾類。
        • Vector

          • 底層資料結構:陣列
          • 優點:執行緒安全
          • 缺點:效率低
        • LinkedList

          • 底層資料結構:雙連結串列
          • 優點:增刪快
          • 缺點:查詢慢,執行緒不安全
    • Set 介面

      • 特點:元素唯一且無序。
      • 子類
        • HashSet

          • 底層資料結構:雜湊表
          • 元素唯一性:透過 hashCode()equals() 實現。
        • LinkedHashSet

          • 底層資料結構:雜湊表和雙連結串列
          • 優點:雜湊表保證元素唯一性,雙連結串列保證元素有序。
        • TreeSet

          • 底層資料結構:紅黑樹
          • 排序方式:
            • 自然排序:元素類實現 Comparable<元素類> 介面並重寫 compareTo 方法。
            • 比較器排序:使用實現了 Comparator 介面且重寫 compare 方法的物件進行排序。
  • 遍歷方式

    • 方式一:使用迭代器,利用 hasNext()next() 方法。
    • 方式二:使用 for 迴圈,利用集合的 size() 方法和 get(索引值)
    • 方式三:將集合轉成陣列,透過陣列的 length 屬性進行遍歷。

Map 介面

  • 成員方法

  • V put(K key, V value)

    • 作用:將指定的鍵 key 和對應的值 value 存入對映中。如果對映中已經存在該鍵,則用新值替換舊值,並返回舊值;如果對映中沒有該鍵,則新增新鍵值對並返回 null
    • 返回值:舊值(如果鍵已存在),否則 null
  • V remove(Object key)

    • 作用:從對映中移除指定的鍵 key 及其對應的值。如果鍵存在,則將其對應的值移除並返回;如果鍵不存在,則返回 null
    • 返回值:被移除的值(如果鍵存在),否則 null
  • void clear()

    • 作用:移除對映中的所有鍵值對,使對映變為空。
    • 返回值:無返回值。
  • boolean containsKey(Object key)

    • 作用:檢查對映是否包含指定的鍵 key。如果對映中存在該鍵,則返回 true;否則返回 false
    • 返回值true 如果對映包含指定的鍵;false 如果對映不包含該鍵。
  • boolean containsValue(Object value)

    • 作用:檢查對映是否包含指定的值 value。如果對映中存在該值,則返回 true;否則返回 false
    • 返回值true 如果對映包含指定的值;false 如果對映不包含該值。
  • boolean isEmpty()

    • 作用:檢查對映是否為空。如果對映中沒有任何鍵值對,則返回 true;否則返回 false
    • 返回值true 如果對映為空;false 如果對映包含鍵值對。
  • int size()

    • 作用:返回對映中鍵值對的數量。
    • 返回值:對映中鍵值對的數量(一個整數)。
  • V get(Object key)

    • 作用:獲取指定鍵 key 對應的值。如果對映中存在該鍵,則返回其對應的值;如果鍵不存在,則返回 null
    • 返回值:指定鍵對應的值(如果鍵存在),否則 null
  • Set<K> keySet()

    • 作用:返回對映中所有鍵的集合(Set)。可以透過這個集合遍歷所有的鍵。
    • 返回值:包含對映中所有鍵的 Set
  • Collection<V> values()

    • 作用:返回對映中所有值的集合(Collection)。可以透過這個集合遍歷所有的值。
    • 返回值:包含對映中所有值的 Collection
  • Set<Map.Entry<K, V>> entrySet()

    • 作用:返回對映中所有鍵值對的集合(Set)。每個鍵值對都表示為 Map.Entry 物件,方便進行遍歷和操作。
    • 返回值:包含對映中所有鍵值對的 Set。每個鍵值對是 Map.Entry<K, V> 物件。
  • 遍歷方式

    • 方式一:獲取所有鍵的集合,遍歷鍵集合,根據鍵獲取值。
    • 方式二:獲取所有鍵值對物件的集合,遍歷集合,根據鍵值對物件獲取鍵和值。
  • 子類

    • HashMap

      • 底層資料結構:雜湊表
    • LinkedHashMap

      • 底層資料結構:雜湊表和連結串列
    • TreeMap

      • 底層資料結構:紅黑樹

物件導向的複習題

1.一個類的4.0寫法:

建立一個`Person`類,包含`name`、`age`和`gender`三個私有欄位。編寫一個構造方法,用於初始化這些欄位,外界要能讀寫每個欄位,並提供一個公共的`toString`方法,用於列印`Person`物件的詳細資訊。

2.封裝與訪問控制:

修改`Person`類,使其`age`欄位只能被增加,不能被減少。為此,你需要提供一個公共的`increaseAge`方法,並在該方法中增加`age`欄位的值。在`Person`類中新增一個私有方法,用於驗證`age`欄位的值是否合法(例如,年齡不能為負數)。在構造方法和`increaseAge`方法中呼叫該方法以確保物件狀態的有效性。

3.繼承:

建立一個`Student`類,繼承自`Person`類。在`Student`類中新增一個`studentId`欄位和一個`getStudentId`方法。在`Student`類中重寫`toString`方法,使其同時列印`Person`類的欄位和`studentId`欄位。

4.多型:

在`Person`類中新增一個名為`speak`的抽象方法,該方法返回一個字串,表示人物的說話內容。建立`Teacher`和`Student`兩個類,分別繼承自`Person`類,並實現`speak`方法。在`Teacher`類中,`speak`方法返回一條教育性的訊息;在`Student`類中,`speak`方法返回一條學習的訊息。編寫一個`School`類,其中包含一個`Person`型別的陣列。在`School`類中新增一個方法,該方法接收一個索引值,並呼叫陣列中對應索引位置物件的`speak`方法,列印出說話內容。在`Person`類中寫一個方法,表示該老師在備課。

5.介面:

實現一個抽菸介面,給`Teacher`類加一個抽菸功能,寫一個`smoking`方法內容是xxx正在吸菸,無返回值,並在4的基礎上實現該介面來呼叫該方法。

效果展示:



相關文章