黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

java中的集合

系統(tǒng) 2191 0

在java的iterator中,如果想刪除一個(gè)元素,比如刪除第一個(gè)元素,則應(yīng)該先調(diào)用next()方法,再remove()。否則會(huì)拋出異常IliegalStateException。

java類提供的AbstractCollection類把基礎(chǔ)方法size和iterator抽象化了,但是在它們的基礎(chǔ)上實(shí)現(xiàn)了例行方法contains()等。一個(gè)具體的集合可以從abastractCollection超類實(shí)現(xiàn)了,而且一些方法已經(jīng)實(shí)現(xiàn)。具體的集合提供iterator方法就可以了。這對于類框架來說是一種很好的設(shè)計(jì)方案。實(shí)際數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)者餅沒有要實(shí)現(xiàn)所有例行方法

的負(fù)擔(dān)。

除類名以map結(jié)尾的類以外,其它類都實(shí)現(xiàn)了Collection接口,而以map結(jié)尾的類實(shí)現(xiàn)了Map接口。

ArrayList 可以動(dòng)態(tài)增長和縮減的索引序列

LinkedList 可以在任何位置進(jìn)行高效插入和移除操作的有序序列

HashSet 沒有重復(fù)元素的無序集合

TreeSet 有序集

EnumSet 包含枚舉類型元素

LinkedHashSet 可以記住元素被插入順序的集合

PriorityQueue 可以高效地移除最小元素的集合

HashMap 一種存儲(chǔ)鍵/值關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)

TreeMap 鍵有序的map集合

EnumMap 鍵屬于枚舉類型的map集合

LinkedHashMap 可以記住鍵/值項(xiàng)被添加順序的map集合

WeakHashMap 該map集合中的值如果沒有在其它地方被使用,則可以被垃圾回收器回收

IdentityHashMap 該map集合中的鍵是用==,而不是用equals來進(jìn)行比較的

多個(gè)迭代器同時(shí)對一個(gè)列表進(jìn)行操作,可能發(fā)生異常。 可以遵循如下規(guī)則: 附加多個(gè)只讀的迭代器,加一個(gè)讀寫迭代器。

散列表

是個(gè)鏈表的數(shù)組,每個(gè)列表稱為一個(gè)散列表元。這種數(shù)據(jù)結(jié)構(gòu)用于快速查找對象。散列表為每個(gè)對象計(jì)算一個(gè)整數(shù),稱為散列碼。若要查找表中某個(gè)對象的位置,只要計(jì)算出它的散列碼,再將它減去以散列表元的總數(shù)為模數(shù)的值,得出的數(shù)就是包含該元素的散列表元的索引。

java中的集合

HashSet

set接口繼承Collection接口,而且不允許集合中存在重復(fù)項(xiàng)。set是一個(gè)Collction,只不過其行為不同。

HashSet允許NULL值,不允許重復(fù)。



輸出:null b a

TreeSet樹集

比散列集有所改進(jìn),是一個(gè)有序集合(同樣不會(huì)有相同的元素存在)。不論你以何種順序?qū)⒐?jié)點(diǎn)加入到該set,當(dāng)循環(huán)輸出時(shí)候,它總是以排序好的順序進(jìn)行輸出打印。



默認(rèn)條件下,樹集假設(shè)你插入的元素實(shí)現(xiàn)了Comparable接口。該接口定義了一個(gè)方法:


String類實(shí)現(xiàn)了Comparable接口,它的comparaTo方法是按照字典順序來對字符串進(jìn)行比較的。

如果要插入自己的對象,則必須通過實(shí)現(xiàn)Comparable接口來自定義一個(gè)排列的順序。Object類中的comparaTo方法沒有提供任何默認(rèn)的實(shí)現(xiàn)。

使用Comparable接口來定義排列的順序有明顯的局限性。對于一個(gè)給定的類,該接口只能實(shí)現(xiàn)一次。如果不想實(shí)現(xiàn)這個(gè)接口,或者想根據(jù)某個(gè)字段進(jìn)行排序呢?

在這種情況下,可以讓樹集使用不同的比較方法,將一個(gè)Comparator對象傳遞給TreeSet類的構(gòu)造器。Comparator接口聲明一個(gè)compare方法,它帶有兩個(gè)顯示的參數(shù):



與compareTo方法一樣,如果a位于b的前面,那么compare方法返回一個(gè)負(fù)整數(shù);拂過a與b相同,則返回0;如果a位于b的后面,則返回一個(gè)正整數(shù)。

如果按照描述項(xiàng)進(jìn)行排序,只需要定義下面實(shí)現(xiàn)了Comparator接口的類:



然后你可以將該類的一個(gè)對象傳遞給樹集的構(gòu)造器。

優(yōu)先級隊(duì)列Priority Queue

是一種能夠在以任意順序插入元素后,再按照順序讀取這些元素的數(shù)據(jù)結(jié)構(gòu)。當(dāng)你調(diào)用remove方法時(shí)候返回當(dāng)前優(yōu)先級隊(duì)列中的最小元素。

它利用堆來實(shí)現(xiàn)。使用優(yōu)先級隊(duì)列的典型例子是任務(wù)調(diào)度。每個(gè)任務(wù)有一個(gè)優(yōu)先級,任務(wù)以隨機(jī)順序添加到隊(duì)列中,每當(dāng)可以啟動(dòng)一個(gè)新任務(wù)時(shí)候,總是以最高優(yōu)先級的

任務(wù)從隊(duì)列中被移除出來執(zhí)行。傳統(tǒng)意義上優(yōu)先級1是最高的優(yōu)先級。

散列集

是個(gè)集合,它使你能夠迅速找到某個(gè)現(xiàn)有的元素。一般你需要擁有要查找元素的精確副本。不過映射表數(shù)據(jù)結(jié)構(gòu)就是來解決這個(gè)問題。映射表用于存儲(chǔ)

許多鍵/值對,你提供了鍵,就能夠找到它對應(yīng)的值。

JAVA類庫為映射表提供了兩個(gè)通用實(shí)現(xiàn): 散列映射表HashMap和樹狀映射表TreeMap 。這兩者都實(shí)現(xiàn)了Map接口。

HashMap對鍵進(jìn)行散列,而TreeMap則用鍵的全局順序進(jìn)行排列,并將其組織成搜索樹。散列函數(shù)或比較函數(shù)只能作用于鍵,與鍵相關(guān)聯(lián)的值不能進(jìn)行散列或則比較。



每當(dāng)將一個(gè)對象添加到映射表中時(shí),必須提供一個(gè)鍵。

若要讀取該一個(gè)對象,必須使用鍵。



如果映射表里沒有存儲(chǔ)任何關(guān)于指定鍵的信息,那么get返回NULL。

鍵必須是唯一的。你不能為同一個(gè)鍵存儲(chǔ)兩個(gè)值。如果你使用同一個(gè)鍵調(diào)用兩次put方法,那么第二個(gè)值將取代第一個(gè)值。

//專用的集和散列表類

弱散列映射表 WeakHashMap

使用弱引用來持有鍵,WeakReference對象用于持有另一個(gè)對象的引用,這里是散列表鍵,如果一個(gè)對象只能有WeakReference對象獲得,那么垃圾回收器仍然會(huì)將其回收,它把可以應(yīng)用該對象的弱引用納入一個(gè)隊(duì)列,WeakHashMap定期檢查該隊(duì)列,當(dāng)一個(gè)弱引用被添加到該隊(duì)列時(shí),就表示鍵不再被任何人使用,WeakHashMap便移除相關(guān)的項(xiàng)。

標(biāo)識(shí)散列映射表IdentityHashMap

鍵的散列碼不是由hashCode方法計(jì)算的,而是由System.identityHashCode方法計(jì)算出來的。這是Object.hashCode方法根據(jù)對象的內(nèi)存地址來計(jì)算散列碼時(shí)所使用的方法。IdentityHashMap類使用==來對各個(gè)對象進(jìn)行比較。

集合框架

java中的集合

遺留下來的集合

Hashtable

該類的作用與HashMap類是相同的,實(shí)際上它們擁有相同的接口。如果不需要與遺留代碼兼容,建議使用HashMap類。

位集BitSet

BitSet類用于存放一個(gè)位序列,比Boolean對象的ArrayList更高效。


java中的集合


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論