由所有聚焦類構成,在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類。因為其可以滿足成對對象集合的需要,還可以确定關鍵字。