1. 程式人生 > >Java知識點總結(四)泛型和集合

Java知識點總結(四)泛型和集合

GenericStack<Integer> intStack = new GenericStack<>();

泛型方法(靜態方法定義):
 public static <E extends GeometricObject> boolean equalArea(E object1, E object2) {
    return object1.getArea() == object2.getArea();
  }
原始型別 通配泛型 消除泛型和對泛型的限制(19.8    P12):……

20..線性表、棧、佇列和優先佇列(概述、List、Queue)

java.util包中 Java合集框架:Set(集合)、List(線性表)、Queue(佇列);Map(對映表)。 Collection(合集) (P22)

(1)Collection介面:
注:java.lang.UnsupportedOperationException  P23 Cloneable、Serializable介面:
(2)迭代器:Iterator 也可以foreach迴圈(foreach迴圈可用於Iterable的任何例項) foreach迴圈隱式地使用了迭代器。
(3)List:允許重複 有序 面向位置
有ListIterator:
①ArrayList
②LinkedList(從線性表兩端提取、插入、刪除元素的方法)

兩種線性表在中間或者末尾位置上插入和刪除元素方面具有同樣的效能 在起始位置插入刪除元素,LinkedList效率高。 (4)Comparator介面: Comparable介面:compareTo方法 Comparator介面:compare方法用於比較沒有實現Comparable介面的類的物件。 P31 (5)線性表和合集的靜態方法: Collections:

注:從可變長引數表中建立線性表,靜態asList方法:
List<String> l1=Arrays.asList("red","green","blue");
(6)(向量類和棧類)Vector、Stack:
Vector:包含訪問和修改向量的同步方法,其餘與ArrayList一樣。
Vector:
Enumeration介面已經被Iterator介面取代。 Stack:
(7)(佇列、優先佇列)Queue介面、Deque、LinkedList、PriorityQueue: Queue介面:
Deque介面(雙端佇列): 兩端插入刪除 PriorityQueue: 預設:用Comparable以元素自然順序排序。最小數值元素:最高優先順序。相同優先順序:任意選一個。

PriorityQueue<String> queue2 = new PriorityQueue( 4, Collections.reverseOrder() );


21..集合和對映表:(Set、Map)

集合(Set):無重複元素 對映表(Map)

(1)Set

無重複元素
雜湊類:HashSet鏈式雜湊集:LinkedHashSet樹形集:TreeSet
Set未引入新常量、方法 AbstractSet實現equals方法、hashCode方法 ①HashSet: 預設:初始容量16,負載係數0.75(元素個數超過 容量×負載係數 ,容量自動翻倍) 新增進來的物件要以正確分散雜湊碼的方式實現hashCode方法。 無重複元素(一個元素新增多次,只有一個被儲存),無特定順序(不按照插入順序) ②LinkedList: 連結串列 排序 可按照插入集合的順序提取 (儲存了元素插入時的順序。要強加一個不同的順序(升序、降序),可以使用TreeSet類) ③TreeSet: SortedSet:可以確保集合中元素是有序的。    headSet(toElement) <toElement;tailSet(fromElement) >=fromElement NavigableSet:擴充套件SortedSet類,提供導航方法null TreeSet:只要物件是可以相互比較的,就可以新增到TreeSet中。 lower("P") :返回小於P的最大元素。 無參構造方法:Comparable介面 注(適用條件):HashSet以一個不可預知的順序儲存元素;LinkedHashSet以元素被插入的順序儲存元素;TreeSet儲存已經排好序的元素。 (2)Set和List效能比較: 集合不支援索引,線性表可以。(因為集合中元素無序) 測試一個元素是否在集合或者線性表中,集合比線性表更高效(快得多)。 (contains、remove方法)

(3)Map

不能有重複的鍵 鍵:任意型別的物件 (P65)
Map介面:
AbstraMap: 實現了Map中除了entrySet()方法之外的所有方法。 HashMap  LinkedHashMap  TreeMap:
HashMap:定位一個值、插入刪除一個條目,高效。 LinkedHashMap:連結串列排序( 插入順序(升序?)、訪問順序(按照元素最後一次被訪問的時間從早到晚排序) ) 無參構造方法:插入順序。訪問順序:構造方法LinkedHashMap(initialCapacity,loadFactor,true) TreeMap:遍歷排好順序的鍵很高效。
無參構造方法:Comparable介面 SortedMap:確保對映表中條目是拍好序的 NavigableMap:   null java.util.HashtableP68 適用條件:

(4)單元素與不可變的合集和對映表: Collections類靜態方法:單元素、不可變只讀