集合框圖:

比較:
Collection:最基本的集合接口,長度不固定(常見方法:add、remove、toArray)
List: ?有序的、可重復(fù)的、允許null、適合堆棧,隊(duì)列等操作
ArrayList:線性結(jié)構(gòu)、非同步(易死鎖、線程不安全)、可變大小的數(shù)組,適合快速隨機(jī)訪問元素
a.將ArrayList轉(zhuǎn)換為對象數(shù)組:arrayList.toArray(new Object[0])
b.默認(rèn)的長度為10
c.ArrayList擴(kuò)容ensureCapacity的方案為“原始容量*3/2+1"
LinkedList:鏈?zhǔn)浇Y(jié)構(gòu)、非同步(易死鎖、線程不安全)、適合快速插入,刪除元素
Vector:同步(線程安全)、類似ArrayList,容量增長比其快
Stack: ?后進(jìn)先出的堆棧, 入棧:push(o) 出棧:pop() ?獲取棧頂元素:peek()
找到一個最靠近棧頂端的匹配元素o,返回這個元素到棧頂?shù)木嚯x:search(o)
Set: 無序、不可重復(fù)
HashSet:采用散列的存儲方法
TreeSet:二叉樹排序
Map:保存鍵值對,無序、不可重復(fù)(不直接繼承于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對應(yīng)的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:數(shù)組,長度固定,不可改,效率高(常見方法:set、get)
非基本數(shù)據(jù)類型數(shù)組初始化方式:
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....}
基本數(shù)據(jù)類型:
a. int obj[] = new int[length];
b.intobj[] = newint[]{1,2....};
c.intobj[] ={1,2,3};
集合和數(shù)組互補(bǔ):Arrays.asList方法和Collection.toArray方法
操作集合的工具類:
Iterator迭代器:主要用于遍歷集合,適合訪問鏈?zhǔn)浇Y(jié)構(gòu)
主要方法:
1、判斷是否有下一個元素:hasNext()
2、獲取下一個元素:next()
3、刪除當(dāng)前元素:remove() ?一般先next()再remove()刪除的就是next()返回的元素
foreach(jdk1.5新增循環(huán)結(jié)構(gòu)):for(variable:collection){ statement; }適合訪問順序結(jié)構(gòu)
Collections:用于操作集合類的工具類,對集合元素進(jìn)行排序、反轉(zhuǎn)、取極值、批量拷貝、替換所有元素等操作。
排序:sort(collection) or ?sort(collection,comparator):支持自然排序和實(shí)現(xiàn)Comparable接口的指定排序
反轉(zhuǎn):reverse(collection)
取極值:min(collection) ?max(collection)
復(fù)制:copy(srcCollection,destCollection)
替換所有元素:fill(collection,newObj)
Arrays:用于操作數(shù)組的工具類,對數(shù)組進(jìn)行排序、搜索、復(fù)制、替換所有元素等操作。
排序:sort
二分法搜索:binarySearch
復(fù)制:copyOf 底層(System.arraycopy)
替換:fill
轉(zhuǎn)換為List: asList
比較器Comparator和Comparable:對集合對象或數(shù)組對象(基本和自定義)進(jìn)行排序,需要實(shí)現(xiàn)Comparator或Comparable接口
Comparator實(shí)現(xiàn)方式:
1. 新建一個比較器實(shí)現(xiàn)Comparator接口:publicintcompare(Object o1,Objecto2)
2. 排序:Collections.sort(collection/array,new 自定義比較器)
Comparable實(shí)現(xiàn)方式:
1. 自定義對象實(shí)現(xiàn)Comparable接口:public intcompareTo(Object o)
2. 排序:Collections.sort(collection/array)