集合框圖:
比較:
Collection:最基本的集合接口,長度不固定(常見方法:add、remove、toArray)
List: ?有序的、可重復的、允許null、適合堆棧,隊列等操作
ArrayList:線性結構、非同步(易死鎖、線程不安全)、可變大小的數組,適合快速隨機訪問元素
a.將ArrayList轉換為對象數組:arrayList.toArray(new Object[0])
b.默認的長度為10
c.ArrayList擴容ensureCapacity的方案為“原始容量*3/2+1"
LinkedList:鏈式結構、非同步(易死鎖、線程不安全)、適合快速插入,刪除元素
Vector:同步(線程安全)、類似ArrayList,容量增長比其快
Stack: ?后進先出的堆棧, 入棧:push(o) 出棧:pop() ?獲取棧頂元素:peek()
找到一個最靠近棧頂端的匹配元素o,返回這個元素到棧頂的距離:search(o)
Set: 無序、不可重復
HashSet:采用散列的存儲方法
TreeSet:二叉樹排序
Map:保存鍵值對,無序、不可重復(不直接繼承于Collection接口),長度不固定
(常見方法:put、get、remove、entrySet、entryKey)
HashMap:非同步的(易死鎖、線程不安全)、允許null
HashTable:同步(線程安全)、不允許null
WeakHashMap:key的弱引用,key不再被引用時GC回收。
TreeMap:二叉樹排序
同步:可避免鎖死,用于多線程
非同步(異步):效率高,適合單一線程,不需要共享資源
易忘:
Set paramSet = map.entrySet();
Iterator> iter = paramSet.iterator();
while (iter.hasNext()) {
Map.Entry mapKeyVal = iter.next();
mapKeyVal.getKey();
mapKeyVal.getValue();
}
HashTable下的:
Properties:操作properties和xml配置文件
讀:
加載properties配置文件:new?Property().load(IO輸入流)
加載xml配置文件:newProperty().loadFromXML(IO輸入流)
讀取配置文件中的key-value : 獲取所有key:?propertyNames/stringPropertyNames ?key對應的value : getProperty(k)
寫:
寫入配置文件:new?Property().setProperty(key,value)
寫入,生成properties文件:
PrintStream fW = new PrintStream(new File("test.properties"));
new?Property().store(fW ,"test"); /new?Property().list(fW);
生成xml文件:new?Property().storeToXML(fW ,"test");
Array:數組,長度固定,不可改,效率高(常見方法:set、get)
非基本數據類型數組初始化方式:
a. Object obj[] = new Object[length];
b. Object obj[] = new Object[]{obj1,obj2....}
c. ?Object obj[];obj[] = new Object[length] 或obj[] = new Object{obj1,obj2....}
基本數據類型:
a. int obj[] = new int[length];
b.intobj[] = newint[]{1,2....};
c.intobj[] ={1,2,3};
集合和數組互補:Arrays.asList方法和Collection.toArray方法
操作集合的工具類:
Iterator迭代器:主要用于遍歷集合,適合訪問鏈式結構
主要方法:
1、判斷是否有下一個元素:hasNext()
2、獲取下一個元素:next()
3、刪除當前元素:remove() ?一般先next()再remove()刪除的就是next()返回的元素
foreach(jdk1.5新增循環結構):for(variable:collection){ statement; }適合訪問順序結構
Collections:用于操作集合類的工具類,對集合元素進行排序、反轉、取極值、批量拷貝、替換所有元素等操作。
排序:sort(collection) or ?sort(collection,comparator):支持自然排序和實現Comparable接口的指定排序
反轉:reverse(collection)
取極值:min(collection) ?max(collection)
復制:copy(srcCollection,destCollection)
替換所有元素:fill(collection,newObj)
Arrays:用于操作數組的工具類,對數組進行排序、搜索、復制、替換所有元素等操作。
排序:sort
二分法搜索:binarySearch
復制:copyOf 底層(System.arraycopy)
替換:fill
轉換為List: asList
比較器Comparator和Comparable:對集合對象或數組對象(基本和自定義)進行排序,需要實現Comparator或Comparable接口
Comparator實現方式:
1. 新建一個比較器實現Comparator接口:publicintcompare(Object o1,Objecto2)
2. 排序:Collections.sort(collection/array,new 自定義比較器)
Comparable實現方式:
1. 自定義對象實現Comparable接口:public intcompareTo(Object o)
2. 排序:Collections.sort(collection/array)