【轉】Vector與ArrayList區別

在寫java的時候,基本上都喜歡用arraylist,甚至我都不知道有個vector的存在。查了一下發現又是線程安全問題。。。咋個線程安全天天圍著我轉呢。。。多得阿里巴巴,讓我開始認識java的所謂線程安全問題。

the following is from:http://blessed24.javaeye.com/blog/751336

1. Vector & ArrayList
1)? Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。
2) 當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而ArrayList只增加50%的大小,這樣,ArrayList就有利于節約內存空間。

2. Hashtable & HashMap
Hashtable和HashMap它們的性能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而HashMap的不是。


3. ArrayList & LinkedList

ArrayList的內部實現是基于內部數組Object[],所以從概念上講,它更象數組,但LinkedList的內部實現是基于一組連接的記錄,所以,它更象一個鏈表結構,所以,它們在性能上有很大的差別:
?????? 從上面的分析可知,在ArrayList的前面或中間插入數據時,你必須將其后的所有數據相應的后移,這樣必然要花費較多時間,所以,當你的操作是在一列數據的后面添加數據而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能; 而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿著連接方向一個一個元素地去查找,直到找到所需的元素為止,所以,當你的操作是在一列數據的前面或中間添加或刪除數據,并且按照順序訪問其中的元素時,就應該使用LinkedList了。
?

如果在編程中,1、2兩種情形交替出現,這時,你可以考慮使用List這樣的通用接口,而不用關心具體的實現,在具體的情形下,它的性能由具體的實現來保證。


4. 配置集合類的初始大小
??? 在Java集合框架中的大部分類的大小是可以隨著元素個數的增加而相應的增加的,我們似乎不用關心它的初始大小,但如果我們考慮類的性能問題時,就一定要考慮盡可能地設置好集合對象的初始大小,這將大大提高代碼的性能。
??? 比如,Hashtable缺省的初始大小為101,載入因子為0.75,即如果其中的元素個數超過75個,它就必須增加大小并重新組織元素,所以,如果你知道在創建一個新的Hashtable對象時就知道元素的確切數目如為110,那么,就應將其初始大小設為110/0.75=148,這樣,就可以避免重新組織內存并增加大小。

轉載于:https://www.cnblogs.com/plmnko/archive/2010/10/10/1847362.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275878.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pyqt控件顯示重疊_Python編程:一個不錯的基于PyQt的Led控件顯示庫,建議收藏學習...

1、控件說明在Github上,偶然發現了一個基于PyQt5的第三方Led指示燈控件庫,使用起來非常方便,控件外觀也比較漂亮,更難能可貴的是作者源代碼寫得比較簡潔,僅僅才約200行左右,可以作為一個在PyQt中寫自定義控…

編寫高質量可維護的代碼:優雅命名

大家好,我是若川。今天分享一篇關于如何命名更優雅的文章。點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列本文首發于政采云前端團隊博客:編寫高質量可維護的代碼:優雅命名ht…

繼春晚不宕機后,百度云這次拿下攜程大單

今年春晚,百度和央視聯手發放高達9億現金紅包的消息,想必讓不少人替百度捏了把汗。根據統計,春晚期間,全球觀眾參與百度App紅包互動次數累計達到208億次,日活從1.6億沖上3億關口,這么大的瞬時流量沖擊是百度…

mysql int 11 java_mysql中int(11)列的大小(以字節為單位)是多少?

正如其他人所說,列可以存儲的最小/最大值以及以字節為單位的存儲量僅由類型而不是長度定義 .很多這些答案都說 (11) 部分僅影響顯示寬度,這不完全正確,但主要是 .int(2) 與 no zerofill specified 的定義將:仍然接受 100 的值輸出…

powerpoint技巧_幾乎每個PowerPoint都爛雞蛋

powerpoint技巧Almost 20 years ago — 2001! — Seth Godin wrote an ebook called Really Bad Powerpoint (and how to avoid it). In that book he detailed all of the things that tend to go wrong in slide presentations.差不多20年前-2001年! —塞斯戈丁(S…

認識mysql總結_從根上理解Mysql - 讀后個人總結1-搜云庫

初識 MySQL通信介紹MySQL 也是典型的 C / S 模型,分為客戶端及服務端,服務端一般部署在遠端服務器中,也可以部署至本地,然后客戶端跟服務端通信則可以使用依賴網絡的 TCP 長連接或 Unix-like 的系統下可以使用 Socket文件的形式通…

白帽子技術分析會話劫持實戰講解

前言通常,大家所說的hack,都是針對一臺主機,在獲得管理員權限后,就很是得意;其實,真正的hacker是占領整個內部網絡。針對內部網絡的hack方法比較多,但比較有效的方法非ARP欺騙、DNS欺騙莫屬了。…

面試官問:你在項目中做過哪些安全防范措施?

大家好,我是若川。今天分享一篇安全相關的文章。點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列如果你被面試官問到這個問題,不要急于描述自己遇到的問題以及如何處理的,你得…

TCP/IP協議族之應用層協議(FTP、TFTP)

文件傳送協議FTP: File Transfer Protocol 是因特網上使用得最廣泛的文件傳送協議。提供交互式的訪問,允許客戶指明文件的類型與格式(如指明是否使用ASCII碼),并允許文件具有存取權限(如訪問文件的用戶必須經過授權&am…

消滅病毒_消滅遺產

消滅病毒The year was 1995, I was 10 years of age. The number 1 single in the UK was Think Twice by Celine Dion, and Batman Forever was the highest grossing movie across the pond in the States. Manchester United, unfortunately, won their 3rd Premier League …

logcat崩潰_使用logcat抓取Android崩潰日志

一、安裝jdkJDK網上教程非常多,此處不再贅述。(好像不裝也沒關系,未實測)二、工具列表a) adb包(v.1.0.31版本或以上,下文提供下載地址)b) logcat.bat文件(下文制作)三、安裝adb(二選一)a) 放到任意位置(推薦)因為adb…

基于 Ubuntu 16.04 LTS 的 KDE neon 到達維護周期

隨著 KDE neon 在 Ubuntu 18.04 LTS 發布,開發團隊已經決定 放棄維護基于 Ubuntu 16.04 LTS版本,大多數用戶預警將希望升級到基于 Ubuntu LTS 的 KDE neno 新版本。“去年KDE neno 被重新定位到 Ubuntu bionic / 18.04上,并且升級已經基本順利…

真誠推薦7個能助你成長的前端大佬

不得不說,如今比前些年學習資料多很多了。現在的前端公眾號也挺多的,這里推薦幾個前端大佬運營的公眾號,都是聚焦前端垂直領域的優質公眾號,關注這些公眾號至少可以:1、了解現在前端技術發展情況和未來發展趨勢&#x…

Silverlight學習筆記(3):Silverlight的界面布局

在上一篇中講述了使用VS2010開發Silverlight的一些基礎知識,并且講述了Silverlight的部署和代碼安全知識,這一篇主要是講述如何在Silverlight中擺放界面元素。記得早年前我還在學習Java的時候,當時有兩種開發Java SE的方法,一種是…

pov-inc_yourself勞自己-懶惰的設計師的POV和一些Figma

pov-incAre you ready and lazy enough (you will fully understand with continue reading this)? Coffee and tea next to you? Alright. This article is going to (not) kick you in your a**. It will be a bit of ‘lesson learned’, for sure a bit of FIGMA, and a …

Geary 0.13.0 發布,GNOME 3 Email 客戶端應用

百度智能云 云生態狂歡季 熱門云產品1折起>>> Geary 0.13.0 發布了,Geary 是一個電子郵件應用,用于 GNOME 3 桌面版本,它允許閱讀、查找和發送電子,并提供簡潔、現代化的界面。這是一個重要的新版本,具有許…

mysql表連接_mysql表連接

在數據庫中tableA連接tableB如下:tableA:a1  a21  12  23  24  3tableB:b1 b22  12  23  33  46  5笛卡爾積:select * from tableA, tableB.1  1  2  11  1  2  21  1  3  31  1  3  41  1  6  52…

輕型本地服務器_一小時超輕型漂移機

輕型本地服務器Iwas introduced to the world of Hyper Light Drifter through a series of visions — titans ravage a broken city, a shallow sea is stained red by floating corpses, a skinny dog leads me into the yawning abyss of a pillar in the center of the se…

baidu的服務器數據里面裝的都是垃圾!

baidu的服務器數據里面裝的都是垃圾! 除了垃圾廣告一點價值沒有,能不能學學google。 國人天天喊支持國貨,但國貨很多垃圾,沒有人管理這些制造垃圾的人。 轉載于:https://www.cnblogs.com/helper/archive/2010/10/12/1848371.html

聊聊前端面試

大家好,我是若川。今天分享一篇面試相關的文章。點擊下方卡片關注我、加個星標,或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列最近 Zoom 國內又開放招聘了,我們組有了前端的 HC,所以我也參加了幾場面試。合…