一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java集合繼承體系詳解

Java集合繼承體系詳解

2021-01-29 11:44snow_7 Java教程

這篇文章主要為大家詳細介紹了Java集合繼承體系,具有一定的參考價值,感興趣的小伙伴們可以參考一下

java的集合類是一種特別有用的工具,它可以用于存儲數量不等的多個對象,并可以實現常用的數據結構,如棧、隊列等。java集合還可以用于板寸具有映射關系的關聯數組。

java集合就像是一個容器,我們可以把多個對象(實際上是對象的引用,習慣上叫對象,)保存到集合容器中。在jdk1.5以前java集合會丟失容器中所有對象的數據類型,jdk1.5以后增加了泛型,java集合可以記住容器中對象的數據類型。

Java集合繼承體系詳解

java集合大致可以分為三個體系:set list map.所有的集合類都位于java.util包下面。

collection接口

collection接口是list、 set、和queue接口的父接口。
collection所代表的是一種規則,它所包含的元素都必須遵循一條或者多條規則。如有些允許重復而有些則不能重復、有些必須要按照順序插入而有些則是散列,有些支持排序有些不支持排序。

一、list接口

list接口是collection接口的直接接口。list代表的是有序的collection,集合中的每個元素都有其對應的索引。list中允許有重復的元素,可以通過索引來訪問指定位置的集合元素。因為list集合默認按元素的添加順序設置元素的索引。

(1)arraylist、vector、stack

arraylist和vector作為list的兩個典型實現類,完全支持list的全部功能。

arraylist和vector類的底層都是基于數組來儲存集合元素,封裝了一個動態的object[]數組,是一種順序存儲的線性表。

arraylist和vector在用法上幾乎完全相同,只是vector在jdk1.0時就存在,它的方法名比較冗長、比arraylist包含的方法多,源碼比arraylist包含的源碼也多,arraylist的序列化實現比vector現在vector基本上被arraylist所取代了。

主要區別:arraylist是線程不安全的,vector是線程安全的。

如果需要在多線程環境下使用list集合,而且需要保證線程安全,依然可以避免使用vector,而是考慮將arraylist包裝成線程安全的集合類。java提供的collections工具類,通過該工具類synchronizelist方法即可以把arraylist包裝成線程安全的arraylist.

stack

vector提供了一個子類,它用于模擬“棧”這種數據結構,棧通常是先進后出的容器。stack提供了額外的5個方法,使得vector可以當做棧來使用。出棧pop,入棧push,訪問棧頂元素peek(),判斷棧是否為空empty(),檢測一個元素在堆棧中的位置serch().

(2)linkedlist

linkedlist是一個鏈式存儲的線性變,本質上是一個雙向鏈表,它不僅實現了list接口還實現了dueue接口(雙端隊列,既具有隊列的特征,也具有棧的特征),所以linkedlist不僅可以做雙向鏈表來使用,還可以當棧和隊列來使用。

linkedlist對元素的插入、刪除元素時速度非???。

linkdedlist也是非同步的。若要實現同步訪問,可以采取
list list = collections.synchronizelist(new linkedlist(.....));

(3)異同點對比

 (1)arraylist和linkedlist

1)arraylist是基于動態數組實現的,linkedlist是基于雙向鏈表實現的。
2)arraylist比較適用于隨機存取,(可直接通過索引,linkedlist需要通過指針遍歷);linkedlist比較適用于增加刪除操作(對于單條的插入和刪除操作arraylist比linkedlist速度快,對于插入好人刪除操作,arraylist需要移動后面的所有元素。)

二、set接口

set是一種不允許包含相同元素的collection。它維持自己的內部排序,隨機訪問沒有任何意義。

(1)hashset

hashset是set接口的典型實現,hashset按hash算法來儲存集合中的元素,具有很好的存取和查找功能。
具有以下特點:

1)不保證元素的排列順序,有可能變化;
2)hashset不是同步的;
3)集合元素可以為空。

(2)treeset

 treeset是sortedset接口的唯一實現,treeset可以確保元素處于排序狀態,treeset并不是根據元素的插入順序進行排序的,而是根據實際值進行排序。支持兩種排序方式:自然排序和定制排序。

(3)enumset

是為枚舉類設計的集合類,enumset不允許加入null元素。如果試圖插入null,會拋出空指針異常。
set的三個實現類都是現成不安全的。

三、map接口

map保存具有映射關系的數據,因此map集合里保存著兩組值,一組值用來保存map里的key,一組用來保存map里的value,key和value可以是任何引用類型的數據。

map里的key不允許重復,value可以重復。key和value之間存在單向的一對一的關系,通過指定的key,總能找到唯一的、確定的value。

(1)hashmap與hashtable

hashmap與hashtable都是map的典型實現類,他們之間的關系類似于arraylist和vector:hashtable是一個古老的map實現類,在jdk1.0時就出現了。

主要區別:

1)hashtable是一個線程安全的map實現,但是hashmap是線程不安全的實現,hashmap的性能要比hashtable高一些,盡量避免使用hashtable,多個線程訪問一個map對象又要保證線程安全時,可以使用collections中的方法把hashmap變成線程安全的。
2)hashtable不允許使用null作為key和value,如果試圖把null加入hashtable中,將會引發空指針異常。

(2)treemap

treemap是map的子接口sortedmap的的實現類,與treeset類似的是treemap也是基于紅黑樹對treemap中所有的key進行排序,從而保證key-value處于有序狀態,treemap也有兩種排序方式:

1)自然排序:treemap的所有key必須實現comparable接口,而且所有key應該是同一類的對象,否則會拋出classcastexception.

2)定制排序:創建treemap時,傳入一個comparator對象,該對象負責對treemap中所有的key進行排序。
由于treemap支持內部排序,所以通常要比hashmap和hashtable慢。

四、queue接口

queue模擬了隊列這種數據結構,隊列通常是“先進先出”的數據結構,通常不允許隨機訪問隊列中的元素。
queue常用的實現類:linkedlist和priorityqueue

(1)linkedlist

linkedlist它不僅實現了list接口還實現了dueue接口(雙端隊列,既具有隊列的特征,也具有棧的特征),dueue接口是queue的子接口。

(2)priorityqueue

priorityqueue保存隊列元素的的順序并不是按照加入隊列的順序,而是按照隊列元素大小進行重新排序。所以當調用peek和poll方法來取隊列中的元素的時候,并不是先取出來隊列中最小的元素。從這個意義上來看,priorityqueue已經違反了隊列的基本規則。priorityqueue不允許插入null元素。

總結:

線程安全的有vector stack hashtable

不允許插入空元素的有hashtable priorityqueue enumset

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/snow_7/article/details/51791112

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲AV人无码综合在线观看蜜桃 | 2020国产精品永久在线观看 | 欧美精品一区二区三区免费播放 | 日本欧美大码a在线视频播放 | 91一个人的在线观看www | 加勒比福利 | 欧美午夜精品 | 91嫩草私人成人亚洲影院 | 国产麻豆91欧美一区二区 | 国产一级视频久久 | 91中文字幕yellow字幕网 | 高清不卡日本v在线二区 | 爆操美女在线观看 | 潘金莲西门庆一级淫片aaaaaa | 色橹| 国产欧美一区二区三区久久 | 四虎影院新地址 | 大胸被c出奶水嗷嗷叫 | 娇妻被朋友征服中文字幕 | 欧美2区 | 免费片在线观看高清 | 欧美一级高清免费a | 亚洲香蕉综合在人在线视看 | 无码AV免费精品一区二区三区 | 无人区大片免费播放器 | 热久久最新网址 | 午夜小视频网站 | 日本一区二区视频在线 | 美女扒开胸罩露出奶了无遮挡免费 | 亚洲国产精品一在线观看 | 亚洲男人天堂网站 | 国模娜娜一区二区三区 | 人配人种视频xxxx | 和两个男人玩3p好爽视频 | 欧美久久影院 | 娇妻与老头绿文小说系列 | 成人欧美一区二区三区白人 | 性欧美videofree中文字幕 | 国产高清精品自在久久 | 疯狂刺激的3p国产在线 | 欧美高清无砖专区欧美精品 |