1. 程式人生 > 其它 >JavaSE 第7章 集合

JavaSE 第7章 集合

** JavaSE 第7章 集合**
1. 物件的儲存 ①陣列(基本資料型別 & 引用資料型別) ②集合(引用資料型別)
陣列儲存的弊端 : 長度一旦初始化以後,就不可改變,真正給陣列元素賦值的個數沒有現成的方法可用

**2. 集合框架 **
Collection 介面 方法
① add(Object obj) addAll(Collection coll),size(),clear(),isEmpty();
② remove(Object obj) removeAll(Collection Coll),retainAll(Collection coll)
equals(Object obj) cotains(Object obj),cotainsAll(Collection coll) hashCode()
③ iterator(),toArray()

List 介面: 儲存有序的,可以重複的元素--相當於動態陣列
|--新增的方法 : 刪除remove(int index) 修改set(int index,Object obj)
|-- 獲取get(int index ) 插入 add (int index ,Object obj)
|-- 新增進List 集合中的元素(或物件)所在的類一定要重寫equals()方法
SET 介面 : 儲存無序的(!=隨機性),不可重複的元素(相同元素後面進不去) --相當於高中的“集合”概念
set 使用的方法基本上都是Collection介面下定義的
新增進set集合所在的類一定要重寫equals()和hashcode() 且 方法保持一致
|--HashSet (主要實現類)
|--LinkedHashSet
(是HashSet子類,當遍歷集合元素時,是按照新增進去的順序實現,維護了一個連結串列指標;若頻繁地遍歷,較少的增刪操作,效率較高)
|--TreeSet (底層二叉樹儲存: 可按照新增進集合的指定屬性排序)
①要求TreeSet新增進的元素必須是同一個類
②兩種排序方式 :
要求重寫的compareTo或compare()方法 與equals()和hashcode()方法 保持一致
自然排序 :
①要求新增進TreeSet中的元素所在類implements Compareable 介面
②重寫compareTo(Object obj),此方法指明按照元素的哪個屬性進行排序
③ 向TreeSet中新增元素即可.若不實現此介面.會報執行異常

	定製排序 : 
		①建立一個實現Coparator介面的實現類的物件.在實現類中重寫Comparator的compare(Object o1,Object o2)方法
		② 在此compare()方法中指明按照元素所在類的那個屬性進行排序
		③將此實現Comparetor介面的實現類的物件作為形參傳遞給TreeSet構造器中
		④向TreeSet中新增元素即可,若不實現此介面,會報執行時異常

Map 介面儲存 “鍵-值”對的資料 ----相當於高中的函式y=f(x)
① key是不可重複,使用set存放。value可以重複,使用Collection來存放。一對key-value構成一個entry(Map.Entry) ,entry是用set存放
②方法: 新增,修改put(Object key,Objet value) 刪除remove(Objet key)獲取 get(Object key) ,size() keySet(),values(),entrySet()

|-- HashMap 主要實現類 可以新增null鍵null值
|-- LinkedHashMap 是HashMap的子類,可以按照新增進Map的順序進行遍歷
|-- TreeMap 需要按照key所在類的指定屬性進行排序,要求key是同一個物件,對key考慮進行自然排序或定製排序
|-- Hashtable 是一個古老的實現類,執行緒安全的,不可以新增null鍵 \null值.不建議使用
	子類 properties 常用來處理屬性檔案

Iterator 介面: 用來遍歷集合Collection 元素

3. Collections工具類: 操作Collection及Map工具類,大部分為static的方法
sort() 升序自然排序 , reverse() 反轉 ,reverseOrder​(Comparatorcmp) 定製排序 , shuffle(), swap() 替換 max(),min() ....