導航:首頁 > 編程語言 > java集合效率

java集合效率

發布時間:2022-09-03 12:34:37

A. java集合有什麼用

當你事先不知道要存放數據的個數,或者你需要一種比數組下標存取機制更靈活的方法時,你就需要用到集合類。
理解集合類
集合類存放於java.util包中。
集合類存放的都是對象的引用,而非對象本身,出於表達上的便利,我們稱集合中的對象就是指集合中對象的引用(reference)。
集合類型主要有3種:set(集)、list(列表)和map(映射)。

B. 為什麼有人說JAVA泛型集合性能不如傳統集合

應該不會,潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的位元組碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。

C. java集合的作用

集合就是存放數據的容器。只不是java語言自己封裝了好多類方便使用而已。
就拿ArrayList作為例子吧,當你從資料庫里取出好多條數據,你可以把他們放在一個數組里,然後循環數組把他們列印出來。但使用數組的前提是你要知道一共有多少數據,因為數組初始化的大小是固定的。但ArrayList這個集合就無需考慮這個限制了,只要實例化一個,然後用add(Object);方法就可以放在裡面了。
數組的效率高,集合更方便,根據需要決定用什麼。

D. Java中最常用的集合類框架



一、HashMap的概述

HashMap可以說是Java中最常用的集合類框架之一,是Java語言中非常典型的數據結構。

HashMap是基於哈希表的Map介面實現的,此實現提供所有可選的映射操作。昆明電腦培訓http://www.kmbdqn.cn/發現存儲的是對的映射,允許多個null值和一個null鍵。但此類不保證映射的順序,特別是它不保證該順序恆久不變。

除了HashMap是非同步以及允許使用null外,HashMap類與Hashtable大致相同。

此實現假定哈希函數將元素適當地分布在各桶之間,可為基本操作(get和put)提供穩定的性能。迭代collection視圖所需的時間與HashMap實例的「容量」(桶的數量)及其大小(鍵-值映射關系數)成比例。所以,如果迭代性能很重要,則不要將初始容量設置得太高(或將載入因子設置得太低)。

HashMap的實例有兩個參數影響其性能:初始容量和載入因子。容量是哈希表中桶的數量,初始容量只是哈希表在創建時的容量。載入因子是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數超出了載入因子與當前容量的乘積時,則要對該哈希表進行rehash操作(即重建內部數據結構),從而哈希表將具有大約兩倍的桶數。


通常,默認載入因子(0.75)在時間和空間成本上尋求一種折衷。載入因子過高雖然減少了空間開銷,但同時也增加了查詢成本(在大多數HashMap類的操作中,包括get和put操作,都反映了這一點)。在設置初始容量時應該考慮到映射中所需的條目數及其載入因子,以便最大限度地減少rehash操作次數。如果初始容量大於最大條目數除以載入因子,則不會發生rehash操作。

注意,此實現不是同步的。如果多個線程同時訪問一個HashMap實例,而其中至少一個線程從結構上修改了列表,那麼它必須保持外部同步。這通常是通過同步那些用來封裝列表的對象來實現的。但如果沒有這樣的對象存在,則應該使用{@linkCollections#synchronizedMapCollections.synchronizedMap}來進行「包裝」,該方法最好是在創建時完成,為了避免對映射進行意外的非同步操作。

Mapm=Collections.synchronizedMap(newHashMap(...));

二、構造函數

HashMap提供了三個構造函數:

HashMap():構造一個具有默認初始容量(16)和默認載入因子(0.75)的空HashMap。

HashMap(intinitialCapacity):構造一個帶指定初始容量和默認載入因子(0.75)的空HashMap。

HashMap(intinitialCapacity,floatloadFactor):構造一個帶指定初始容量和載入因子的空HashMap。

這里提到了兩個參數:初始容量,載入因子。這兩個參數是影響HashMap性能的重要參數,其中容量表示哈希表中桶的數量,初始容量是創建哈希表時的容量,載入因子是哈希表在其容量自動增加之前可以達到多滿的一種尺度,它衡量的是一個散列表的空間的使用程度,負載因子越大表示散列表的裝填程度越高,反之愈小。對於使用鏈表法的散列表來說,查找一個元素的平均時間是O(1+a),因此如果負載因子越大,對空間的利用更充分,然而後果是查找效率的降低;如果負載因子太小,那麼散列表的數據將過於稀疏,對空間造成嚴重浪費。系統默認負載因子為0.75,一般情況下我們是無需修改的。

HashMap是一種支持快速存取的數據結構,要了解它的性能必須要了解它的數據結構。


E. 在java中,foreach 和 iterator遍歷集合時,那個效率更高一些

你好,前者效率更高

原因是for直接針對集合里的下一個對象

而iterator其實相當於是一個指針,這樣說不準確,但是可以這樣理解,每次執行它會先查找當前指向的對象,然後指針再指向下一個位置

所以說,如果有指針概念的話,for的「針對」直接是簡單數據,而iterator的指針卻是一個對象

F. 為什麼java中數組的效率比集合高

最簡單的理解是,集合內部是用數組實現的,直接用數組省去了一部分操作。

G. 為什麼java集合的多線程實現對於大量數據並不能提高效率

這是多線程的效率問題,和集合沒有關系
如果你是IO密集的應用,多線程會提高效率
如果你是計算密集的應用,多線程病不能提高效率

H. 淺談Java中幾個常用集合添加元素的效率

下面給你簡單做一下比較:初始化需要進行比較的集合,統一增加10萬個元素,獲取整個過程的執行時間。
1、List集合增加元素
List添加10萬個元素程序運行時間為:8ms
2、Set集合增加元素
Set添加10萬個元素程序運行時間為:17ms
3、LinkedList集合增加元素
LinkedList添加10萬個元素程序運行時間為:8ms
4、TreeSet集合增加元素
TreeSet添加10萬個元素程序運行時間為:40ms
總結:在不考慮去重和排序的情況下,以上幾個常用集合的執行效率排序為:ArrayList >= LinkedList > HashSet > TreeSet
5、HashMap集合增加元素
HashMap添加10萬個元素程序運行時間為:17ms
6、TreeMap集合增加元素
TreeMap添加10萬個元素程序運行時間為:40ms
總結:在不考慮排序的情況下,HashMap的執行效率高於TreeMap:HashMap > TreeMap。

I. JAVA裡面set,map,list的區別是什麼(盡量詳細)

java集合的主要分為三種類型:

Java所有「存儲及隨機訪問一連串對象」的做法,array是最有效率的一種。

1、
效率高,但容量固定且無法動態改變。
array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量。

2、Java中有一個Arrays類,專門用來操作array。
arrays中擁有一組static函數,
equals():比較兩個array是否相等。array擁有相同元素個數,且所有對應元素兩兩相等。
fill():將值填入array中。
sort():用來對array進行排序。
binarySearch():在排好序的array中尋找元素。
System.array():array的復制。

若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。所以就要用到集合。

那我們開始討論java中的集合。

集合分類:

Collection:List、Set
Map:HashMap、HashTable

閱讀全文

與java集合效率相關的資料

熱點內容
dns伺服器在電腦上有什麼用 瀏覽:915
杭州大媽喜歡程序員 瀏覽:686
python評論樹講解 瀏覽:678
juniper防火牆常用命令 瀏覽:426
vapp怎麼下載地址 瀏覽:11
pdf裡面內容怎麼修改 瀏覽:807
收藏網址加密的瀏覽器 瀏覽:1000
phpurl問號 瀏覽:898
什麼筆記本電腦可以用python 瀏覽:135
加密相冊如何翻找 瀏覽:992
泰州地區DNS伺服器地址 瀏覽:849
一種app可以買菜用英語怎麼說 瀏覽:196
中國聯通app裡面通話詳單怎麼刪除 瀏覽:505
計算機網路編譯軟體 瀏覽:100
程序員說不能說的秘密 瀏覽:700
在線shell編譯器 瀏覽:103
為什麼王者榮耀安卓轉蘋果成功登不上去 瀏覽:710
文件加密演算法可行性報告 瀏覽:60
a3雙面列印pdf 瀏覽:270
被命令文言文 瀏覽:717