我知道這個問題可能有點愚蠢,但我只想澄清疑問。 當通過Java教程收集(http://docs.oracle.com/javase/tutorial/collections/index.html)時,我沒有找到任何有關Vector和Hashtable的相關信息。兩者都屬於Collection框架,因爲Vector是List的實現,而Hashtable是Map的實現。如果是這樣,那爲什麼它不在Sun教程中?我在哪裏可以找到適用於Collection的Sun教程,其中包含關於Vector和Hashtable的良好文檔以及有關存儲在List,Set和Map中的元素的深入知識?我在哪裏可以找到Java中的文檔Vector和Hashtable?
回答
因爲Vector
和Hashtable
是舊的舊版集合類。不要使用它們。
而不是Vector
使用ArrayList
;而不是Hashtable
使用HashMap
。
當Java 1.2發佈(很久以前)時,新的集合類被添加到Java(集合框架)。 Sun沒有刪除舊的類,如Vector
和Hashtable
,因爲他們希望新的Java版本向後兼容。現在我們還有那些老班。
需要注意的一點是Vector
和Hashtable
是同步的,而ArrayList
和HashMap
不是。大多數時候你不需要同步;如果你這樣做,那麼你必須注意同步你的ArrayList
,如果你需要一個地圖,使用ConcurrentHashMap
而不是普通的HashMap
。
謝謝Jesper的回答。但是,我是否可以爲Collection收集包含Vector和Hashtable的舊Java教程,就像Sun最近收集的那個教程一樣。其次,任何有關深入瞭解存儲在List,Set和Map中的元素的知識的教程(Sun doc將是首選)? – Nizam
您可以在[API文檔](http://docs.oracle.com/javase/8/docs/api/)中查找這些類。他們的工作與其他列表和地圖類幾乎相同,那麼爲什麼您需要爲這些舊類提供特殊教程?您已經找到的教程解釋瞭如何使用列表,集合和地圖。 – Jesper
我讀了關於集合,它說hashset將它的元素存儲在一個散列表和散列表存儲中。我只是渴望知道什麼是桶。如何添加元素,以及何時刪除它是從後端或前端刪除。哈希碼如何幫助哈希表。散列碼是否也存儲在存儲區中。如果是這樣,等等等等。我希望你明白我想說的。 – Nizam
一般而言,Vector
和Hashtable
可能被視爲棄用。
如果你看一下Vector和Hashtable你會看到,他們原來實行的ArrayList
和HashMap
網上的javadoc,直到集合框架來了,在這一點上,他們被改進爲實現從集合框架接口;這樣一來,依賴那些在那裏的班級的老班級就不會中斷。他們和他們更常見的弟兄們唯一的區別是他們是同步的。
在絕大多數情況下,不需要同步,因此程序員將避免同步開銷並選擇常規的ArrayLists
和HashMaps
。如果需要同步收集,總是有Collections.synchronized____()
(或ConcurrentHashMap
),這也可以很好地工作。
您可能不需要Vector
和Hashtable
的教程,因爲它們的行爲已經與您可能熟悉的類非常相似,並且因爲它們的用處不大。關於List
,Set
和Map
的更多信息,在線javadoc是goodplace到start。
+1,注意它們是同步的 – RobAu
隨着以Vector的JavaDoc提到:
從Java 2平臺V1的。2,這個類被改進來實現List接口,使它成爲Java集合框架的成員。與新的集合實現不同,Vector是同步的。如果不需要線程安全的實現,建議使用ArrayList來代替Vector。
它是List
接口的傳統實現。整個集合框架已被實現爲默認情況下不是線程安全的。如果您需要線程安全性,則可以使用適當的Collections.synchronizedXXX()
方法來包裝任何非踩踏安全實現,例如XXX
爲List
或Map
或。這同樣適用於HashTable,它也默認同步。您應該使用HashMap
,而不是Collections.synchonizedMap()
。
- 1. 我在哪裏可以找到Microsoft Java API文檔
- 2. 我在哪裏可以找到Crafter Profile和Crafter Social的文檔
- 3. 我在哪裏可以找到Unix的TTY和curses文檔?
- 4. 你在哪裏可以找到gradle中java插件的文檔?
- 5. 我在哪裏可以找到SimpleITK文檔和參考信息?
- 6. 我在哪裏可以找到Upshot.js示例和文檔?
- 7. 我在哪裏可以找到Oracle Forms中JNI包的文檔?
- 8. 哪裏可以找到Wordpress API文檔?
- 9. 哪裏可以找到Caliburn.Micro 1.4文檔?
- 10. 哪裏可以找到eventfd_write文檔?
- 11. 我在哪裏可以找到Excel的圖片集的文檔?
- 12. 我在哪裏可以找到可以包含在Gemfile中的官方文檔?
- 13. 我在哪裏可以找到tkinter的API文檔?
- 14. 我在哪裏可以找到特定版本的文檔
- 15. 我在哪裏可以找到有關OutlookServicesClient API的文檔?
- 16. 我在哪裏可以找到有關OpenSSL.Net的文檔
- 17. 我在哪裏可以找到RPM宏擴展的文檔?
- 18. 我可以在哪裏找到GitLab API的舊文檔?
- 19. 我在哪裏可以找到支持此行爲的文檔?
- 20. 我在哪裏可以找到npm軟件包的文檔?
- 21. 我在哪裏可以找到有關Mysql :: Result類的文檔?
- 22. 我在哪裏可以找到有關kflushd的文檔?
- 23. 我在哪裏可以找到Stellent/Oracle UCM的IdocScript文檔?
- 24. 我在哪裏可以找到關於jqPlot for Angularjs的文檔?
- 25. 我在哪裏可以找到zurb-foundation的完整文檔
- 26. 我在哪裏可以找到PrestaShop的文檔?
- 27. 我在哪裏可以找到NuGet v3 API的文檔?
- 28. 我在哪裏可以找到'header'事件的文檔?
- 29. 我在哪裏可以找到大量最新的Jenkins文檔?
- 30. 我在哪裏可以找到Python的vtk文檔?
向量是List的實現,而不是Set。 – schmop
對不起,輸入錯誤 – Nizam