集合

集合框圖:

比較:

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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.Java集合框架是什么?說出一些集合框架的優(yōu)點(diǎn)? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    Oneisall_81a5閱讀 960評論 0 10
  • 1.Java集合框架是什么?說出一些集合框架的優(yōu)點(diǎn)? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    胖先森閱讀 838評論 4 17
  • 3.3 集合 一方面, 面向?qū)ο笳Z言對事物的體現(xiàn)都是以對象的形式,為了方便對多個對象的操作,就要對對象進(jìn)行存儲。另...
    閆子揚(yáng)閱讀 838評論 0 1
  • 1.Java集合框架是什么?說出一些集合框架的優(yōu)點(diǎn)?每種編程語言中都有集合,最初的Java版本包含幾種集合類:Ve...
    yjaal閱讀 1,245評論 1 10
  • 我其實(shí)是一個不愛寫日記的人,因?yàn)槲铱傆X得,每天都那么認(rèn)真的活,實(shí)在是太累了。 直到最近,我才發(fā)覺,真正的理由是,我...
    范為的第三只眼閱讀 611評論 0 4

友情鏈接更多精彩內(nèi)容