日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java的集合应用_Java之集合类应用总结

發布時間:2023/12/4 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java的集合应用_Java之集合类应用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.集合類類圖

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

├HashSet

├TreeSet

├LinkedHashSet

Map

├Hashtable

├HashMap

├WeakHashMap

└SortedMap

└TreeMap

2.分類介紹

Collection是最基本的集合接口,JDK提供的類都繼承自Collection的“子接口”,如List和Set。所有實現Collection接口的類都必須提供兩個標準的構造函數:無參數的構造函數和有一個Collection參數的構造函數。前者用于創建一個空的Collection,后者用于創建一個新的Collection,允許用戶復制一個Collection。不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,可逐一訪問Collection中每一個元素。用法如下:

Iterator it = collection.iterator(); //獲得一個迭代子    while(it.hasNext()) {

Object obj = it.next(); //得到下一個元素    }

由Collection接口派生的兩個接口是List和Set。

1)Collection和Map區別:

Collection類型,每個位置只有一個元素。

Map類型,持有key-value形式的數據——“鍵值對”,即其元素是成對的對象。

2)Collection子接口List和Set區別:

List是有序的Collection,確保維護元素特定的順序,這類似于Java的數組。

Set接口不保證維護元素的次序,存入Set的每個元素必須是唯一的。加入Set的Object必須定義equals()方法以確保對象的唯一性。

3)List實現類ArrayList、LinkedList和Vector區別

ArrayList實現了可變大小的數組,允許對元素進行快速隨機訪問,但是向List中間插入與移除元素的速度很慢(類似動態數組)。它允許所有元素,包括null。ArrayList沒有同步。如果數組長度一定,用數組效率更高。

LinkedList插入與刪除元素開銷不大,隨機訪問相比則相對較慢(類似鏈表)。可當堆棧、隊列和雙向隊列使用。

Vector是同步的。當一個Iterator被創建而且正在被使用,另一個線程改變了Vector的狀態,這時將拋出ConcurrentModificationException異常,因此必須捕獲該異常。比ArrayList慢。

Stack繼承自Vector,實現一個后進先出的堆棧。同步的。

4)Set實現類HashSet和TreeSet區別

HashSet為快速查找而設計的Set(采用散列函數)。存入HashSet的對象必須定義hashCode()。?它不保證集合的迭代順序;特別是它不保證該順序恒久不變。此類允許使用 null元素。此實現不是同步的。

TreeSet保持次序的Set,底層為紅黑樹。使用它可以從Set中提取有序的序列。

LinkedHashSet: 具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(哈希函數+鏈表)。于是在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。

5)Map實現類Hashtable、HashMap和WeakHashMap

Hashtable是同步的,不允許null。繼承于陳舊的Dictionary類的。

HashMap是非同步的,速度比Hashtable快。允許null。HashMap繼承于AbstractMap類。內部Hash數組等于Hashtable不同。Map 中插入、刪除和定位元素,HashMap 是最好的選擇。

WeakHashMap是一種改進的HashMap,若一個key不再被外部所引用,那么該key可以被GC回收。

TreeMap中所有元素都保持固定的順序,如果需有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)。

3 總結

容器對象僅能持有對象引用(對象的指針),而不是將對象信息Copy一根至數列末位置。

在多線程環境下,對于非同步的結合和Map,可以用類似List list = Collections.synchronizedList(new LinkedList(...));或Collections.synchronizedMap(originMap)實現其同步,或者其他手動同步的方法。

Map提供的不是對象與數組的關聯,而是對象和對象的關聯。

Set只接受不重復的對象。HashSet提供了最快的查詢速度。而TreeSet則保持元素有序。LinkedHashSet保持元素的插入順序。

沒必要再在新代碼里使用舊類庫留下來的Vector,Hashtable和Stack了。

總結

以上是生活随笔為你收集整理的java的集合应用_Java之集合类应用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。