JAVA程式設計思想(第四版)學習筆記----11.4 容器的列印
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import static java.lang.System.out;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
import java.util.TreeSet;
public class ContainerFramework {
static Collection fill(Collection<String> collection) {
collection.add( "rat" );
collection.add( "cat" );
collection.add( "dog" );
collection.add( "dog" );
return collection;
}
static Map fill(Map<String, String> map) {
map.put( "rat" , "Fuzzy" );
map.put( "cat" , "Rags" );
map.put( "dog" , "Bosco" );
map.put( "dog" , "Spot" );
return map;
}
public static void main(String[] args) {
out.println(fill( new ArrayList<String>()));
out.println(fill( new LinkedList<String>()));
out.println(fill( new HashSet<String>()));
out.println(fill( new TreeSet<String>()));
out.println(fill( new LinkedHashSet<String>()));
out.println(fill( new HashMap<String, String>()));
out.println(fill( new TreeMap<String, String>()));
out.println(fill( new LinkedHashMap<String, String>()));
}
}
|
登入後複製
1 2 3 4 5 6 7 8 | [rat, cat, dog, dog]
[rat, cat, dog, dog]
[cat, dog, rat]
[cat, dog, rat]
[rat, cat, dog]
{cat=Rags, dog=Spot, rat=Fuzzy}
{cat=Rags, dog=Spot, rat=Fuzzy}
{rat=Fuzzy, cat=Rags, dog=Spot}
|
登入後複製
經過運行程式碼,查看結果可以看出,Collection列印出來的內容用方括號[]括住,每個元素由逗號分隔;Map印出來的內容用大括號{}括住,鍵與值用等號連接作為一個元素(鍵=值),每個元素用逗號分隔。
java容器類別包括兩種:以Collection介面為根的集合類,和以Map為根的關聯數組類
Collection介面有三個重要的子類型:List(列表),Set(集合),Queue(隊列)
List有兩個重要的實現,分別為ArrayList和LinkedList
List介面的所有實現類別都保證其元素可以按照插入順序被保存,所以List是有序的collection。其中ArrayList優點在於可以高效的隨機存取其元素,缺點在於在指定位置插入、移除元素的效能比較慢。而LinkedList在隨機存取方面比較慢,但在指定位置插入、移除元素的效率比較高。
2. Set有三個重要的實現,分別為HashSet,TreeSet,LinkedHashSet
Set介面的所有實現類別都保證其元素不會重複。 HashSet使用雜湊演算法來存數集合中的元素,它的元素是無序的,但是取得元素的效率是最快的。 TreeSet是有序的集合,它將集合中的元素按照比較結果的升序進行保存。 LinkedHashSet也是有序的集合,它按照元素插入的順序進行保存對象,同時又具有HashSet的查詢速度。
3. Queue
Queue允許在容器的一端進行資料的插入,在另一端進行資料的移除。
Map介面有三個重要的子類型:HashMap,TreeMap,LinkedHashMap,可以透過鍵來找出值,是一種「鍵-值"對的容器
HashMap是無序的,具有最快的查找速度。
TreeMap是有序的,按照比較鍵的結果的升序進行保存
LinkedHashMap是有序的,按照插元素的順序進行保存,同時也保留了HashMap的查詢速度。