集合

集合框圖:

比較:

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)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.Java集合框架是什么?說出一些集合框架的優點? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    Oneisall_81a5閱讀 908評論 0 11
  • 1.Java集合框架是什么?說出一些集合框架的優點? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    胖先森閱讀 813評論 4 17
  • 3.3 集合 一方面, 面向對象語言對事物的體現都是以對象的形式,為了方便對多個對象的操作,就要對對象進行存儲。另...
    閆子揚閱讀 744評論 0 1
  • 1.Java集合框架是什么?說出一些集合框架的優點?每種編程語言中都有集合,最初的Java版本包含幾種集合類:Ve...
    yjaal閱讀 1,184評論 1 10
  • 我其實是一個不愛寫日記的人,因為我總覺得,每天都那么認真的活,實在是太累了。 直到最近,我才發覺,真正的理由是,我...
    范為的第三只眼閱讀 448評論 0 4