欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

java中的集合

系統 1852 0

在java的iterator中,如果想刪除一個元素,比如刪除第一個元素,則應該先調用next()方法,再remove()。否則會拋出異常IliegalStateException。

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

的負擔。

除類名以map結尾的類以外,其它類都實現了Collection接口,而以map結尾的類實現了Map接口。

ArrayList 可以動態增長和縮減的索引序列

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

HashSet 沒有重復元素的無序集合

TreeSet 有序集

EnumSet 包含枚舉類型元素

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

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

HashMap 一種存儲鍵/值關聯的數據結構

TreeMap 鍵有序的map集合

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

LinkedHashMap 可以記住鍵/值項被添加順序的map集合

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

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

多個迭代器同時對一個列表進行操作,可能發生異常。 可以遵循如下規則: 附加多個只讀的迭代器,加一個讀寫迭代器。

散列表

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

java中的集合

HashSet

set接口繼承Collection接口,而且不允許集合中存在重復項。set是一個Collction,只不過其行為不同。

HashSet允許NULL值,不允許重復。



輸出:null b a

TreeSet樹集

比散列集有所改進,是一個有序集合(同樣不會有相同的元素存在)。不論你以何種順序將節點加入到該set,當循環輸出時候,它總是以排序好的順序進行輸出打印。



默認條件下,樹集假設你插入的元素實現了Comparable接口。該接口定義了一個方法:


String類實現了Comparable接口,它的comparaTo方法是按照字典順序來對字符串進行比較的。

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

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

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



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

如果按照描述項進行排序,只需要定義下面實現了Comparator接口的類:



然后你可以將該類的一個對象傳遞給樹集的構造器。

優先級隊列Priority Queue

是一種能夠在以任意順序插入元素后,再按照順序讀取這些元素的數據結構。當你調用remove方法時候返回當前優先級隊列中的最小元素。

它利用堆來實現。使用優先級隊列的典型例子是任務調度。每個任務有一個優先級,任務以隨機順序添加到隊列中,每當可以啟動一個新任務時候,總是以最高優先級的

任務從隊列中被移除出來執行。傳統意義上優先級1是最高的優先級。

散列集

是個集合,它使你能夠迅速找到某個現有的元素。一般你需要擁有要查找元素的精確副本。不過映射表數據結構就是來解決這個問題。映射表用于存儲

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

JAVA類庫為映射表提供了兩個通用實現: 散列映射表HashMap和樹狀映射表TreeMap 。這兩者都實現了Map接口。

HashMap對鍵進行散列,而TreeMap則用鍵的全局順序進行排列,并將其組織成搜索樹。散列函數或比較函數只能作用于鍵,與鍵相關聯的值不能進行散列或則比較。



每當將一個對象添加到映射表中時,必須提供一個鍵。

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



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

鍵必須是唯一的。你不能為同一個鍵存儲兩個值。如果你使用同一個鍵調用兩次put方法,那么第二個值將取代第一個值。

//專用的集和散列表類

弱散列映射表 WeakHashMap

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

標識散列映射表IdentityHashMap

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

集合框架

java中的集合

遺留下來的集合

Hashtable

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

位集BitSet

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


java中的集合


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品免费一区二区三区 | 国产成人精品免高潮在线观看 | 日韩成人av网站 | 日韩www| 2021国产成人综合亚洲精品 | 深爱五月综合网 | 久久大香香蕉国产免费网站 | 色综合天天综合中文网 | 日本1区2区 | 国产91色在线 | 亚洲 | 国产精品国产三级在线专区 | 成年人在线看片 | 高清人人天天夜夜曰狠狠狠狠 | 香蕉国产 | 亚洲黄色第一页 | 91看片淫黄大片欧美看国产片 | 日韩精品一区二区在线观看 | 久久夜夜操 | 日本天天操 | 男人天堂综合 | 99热热热| 欧美成人午夜 | 福利四区| 色中文网 | 国产一区二区三区高清 | 91欧美激情一区二区三区成人 | 日本精品人妻无码免费大全 | 欧美国产日韩在线 | 久久久久久久久淑女av国产精品 | 婷婷久久无码欧美人妻 | 久久精品国产99久久6动漫亮点 | 久久网亚洲 | 老司机免费福利视频无毒午夜 | 久久久久国产精品人 | 美女国内精品自产拍在线播放 | 免费午夜电影 | 91久久线看在观草草青青 | 日韩欧美精品在线 | 精品欧美一区二区三区久久久小说 | 狠狠五月深爱婷婷网免费 | 欧美一性一乱一交 |