天天看點

《Java大學教程》—第17章 Java聚焦類架構

由所有聚焦類構成,在java.util包中,包含三個重要接口:

*    List清單:元素為單個對象,元素在清單中是有序、可重複

*    Set集合:元素為單個對象,元素在集合中無序、不可重複

*    Map映射:元素為成對對象(第一個對象是關鍵字,第二個對象是值),元素在映射中無序,關鍵字不可重複

注:JCF不能存儲基本資料類型。

17.2 List接口和ArrayList類

*    ArrayList類

*    LinkedList類

17.2.1    泛型(generics):允許設定存在在特定聚焦類對象中的對象類型。可以将一個或多個類型作為參數發送到一個類(或接口)中,亦被稱為參數化類型。

優點:允許編譯檢查類型;不必進行對象類型轉換;避免産生ClassCastException異常。

17.2.2    使用接口類型代替實作類型作為函數的形參

允許将來修改實作的方式而不必修改形參中對象的類型。

17.2.3    List接口的方法

操作:增加(add)将元素插在清單的末尾;将元素插入到清單中指定的位置。

注:使用索引插入參數到清單中時,必須保證索引是目前清單中的有效位置

修改(set)、删除(delete)

清單:顯示(toString)、總數(size)、是否空(isEmpty)

元素:位置(indexOf)傳回指定對象在清單中第一次出現時的索引。

擷取(get)、存在(contains)

17.3    增強的for循環:數組、List接口、Set接口

不能用于修改或删除原始集合中的元素,因為編譯可以通過,但是有可能導緻程式結果不可預測。

17.4    Set接口和HashSet類

*    HashSet類

*    TreeSet類

17.4.1    Set接口的方法

操作:增加和修改(add)、删除(remove)

元素:擷取(get)、存在(contains)

17.4.3    Iterator接口:用于修改和删除Set中的元素

使用Set對象中提供的Iterator對象。

17.5    Map接口和HashMap類

*    HashMap類

*    TreeMap類

Map接口的方法:

操作:增加和修改(put)、删除(remove)

元素:關鍵字存在(containsKey)、值存在(containsValue)、值擷取(get)

17.6    JCF中使用自定義類

方法重寫:toString();    equals();    hashCode()

自測題:

1. 三種接口的差別:

2.    Map<String, Student> javaStudents = new HashMap<String, Student>();

a)    允許将來修改實作的方式而不必修改形參中對象的類型。

b)    可以将一個或多個類型作為參數發送到一個類(或接口)中,亦被稱為參數化類型。

c)    javaStudents.put("U0012345","Fadi");

javaStudents定義的是Student類型,不能接收String類型的資料。

3.    StockItem類

a)    

b)

c)

4.

a)

1.    NameStack.java    NameStackException.java    NameStackTest.java

a)    因為需要可變大小的存儲空間,而存儲的對象必須是有序的,但是是可以重複的。

2.    CarRegister.java    CarRegisterException.java        CarRegisterTest.java

a)    因為需要可變大小的存儲空間,而存儲的對象可以是無序的,但是必須惟一。

3.    Book.java        Library.java    LibraryTest.java

4.    Bank.java        BankAccount.java        BankTest.java

a)    HashMap類适合代替數組實作Bank類。因為其可以滿足成對對象集合的需要,還可以确定關鍵字。