亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java集合 之 Map集合

2019-11-15 01:14:27
字體:
來源:轉載
供稿:網友
java集合 之 Map集合

Map用于保存具有映射關系的數據,具有兩組值:一組用于保存Map中的key;另一組用于保存Map中的value,形成key-value的存儲形式。

Map集合中包含的一些方法:

void clear():刪除Map集合中的所有key-value對。

boolean containsKey(object key):查詢Map集合中是否包含指定的key,如果包含,返回true。

boolean containsValue(Object value): 查詢Map集合中是否包含指定的value,如果包含返回true。

set entrySet():返回Map中包含的key-value對所組成的Set集合,每個集合元素都是Map.Entry(Entry是Map的內部類)對象。

Object get(Object key):返回指定的key所對應的value;如果此Map中不包括該key,則返回null。

boolean isEmpty():查詢該Map是否為空,如果為空則返回null。

set keyset():返回該map中所有key所組成的集合。

Object put(Object key,Object value):添加一個key-value對,如果當前Map中已有一個與該key相等的key-value對,則新的key-value會覆蓋原來的key-value對。

void putAll(Map m):將指定Map中key-value復制到當前Map中。

Object remove(Object key):刪除指定key所對應的key-value對,返回被刪除key所對應的value,如果key不存在返回null。

boolean remove(Object key, Object value):刪除指定key,value所對應的key-value對。如果成功刪除,則返回true,否則返回false。

int size():返回該Map中key-value的個數。

Collection values():返回該Map中所有value組成的collection。

Java8為Map新增的方法:

Object compute(Object key, BiFunction remappingFunction):該方法使用remappingFunction根據原key-value對計算一個新的value。只要新的value不為null,就使用新的value覆蓋原value;如果原value為null,但新value不為null,則刪除原key-value對;如果原value、新value同時為null,那么該方法不改變任何key-value對,直接返回null。

Object computeIfAbsent(Object key, Function mappingFunction):如果傳入的key參數在Map中對應的value為null,該方法將使用mappingFunction根據原key、value計算一個新的結果,如果該計算結果不為null,則用該計算結果覆蓋原value;如果原Map原來不包括該key,該方法可能會添加一組key-value對。

Object computeIfPResent(Object key, BiFunction remappingFunction):如果傳給該方法的key參數在Map中對應的value不為null,該方法將使用remappingFunction根據原key、value計算一個新結果,如果該計算結果不為null,則使用該結果覆蓋原來的value;如果計算結果為null,則刪除原key-value對。void forEach(BiConsumer action):該方法是Java8為Map新增的一個遍歷key-value對的方法。

Object getOrDefault(Object key, V defaultValue):獲取指定的key對應的value。如果該key不存在,則返回defaultValue。

Object merge(Object key, Object value, BiFunction remappingFunction):該方法會先根據key參數獲取該Map中對應的value。如果獲取的value為null,則直接使用傳入的value覆蓋原value(在這種情況下,可能會添加一組key-value);如果獲取的value不為null,則使用remappingFunction函數根據原value、新value計算一個新的結果,并用新的結果去覆蓋原有的value。

Object putIfAbsent(Object key, Object value):該方法會自動檢測指定的key對應的value是否為null,如果該key對應的value為null,則使用傳入的新value代替原來的null。

Object replace(Object key, Object value):將Map中指定key對應的value替換成新value。如果key在Map中不存在,該方法不會添加key-value對,而是返回null。

Boolean replace(K key, V oldValue, V newValue):將Map中指定的key-value對的原value替換成新value。如果在Map中找到指定的key-value對,則執行替換并返回true,否則返回false。

replaceAll(BiFunction function):該方法使用function對原key-value對執行計算,并將計算結果作為key-value對的value值。

Java8改進的HashMap和Hashtable實現類

HashMap和Hashtable是Map接口的典型實現類。HashMap和Hashtable存在兩點典型區別:

1、 Hashtable是一個線程安全的Map實現,但HashMap是線程不安全的實現,所以HashMap比Hashtable的性能更高一些;但如果有多個線程訪問同一個Map對象時,使用Hashtable會更好。

2、 Hashtable不允許使用null作為key和value,如果試圖將null值放進Hashtable中,將會引發NullPointerException異常,但HashMap可以使用null作為key或value。

PS:

A、 由于HashMap中的key不能重復,所以HashMap中只能最多有一個key-value對的key為null,但可以有無數多個key-value對的value為null。

B、 Hashtable是一個古老的類,他的名字甚至沒有遵守java命名規范。與Vector類似,盡量少用Hashtable實現類,即使是需要創建線程安全的Map實現類,也無需使用Hashtable實現類。

C、 HashMap和Hashtable判斷兩個key值相等的的標準是:兩個key通過equals()方法比較返回true,兩個key的Hashcode值也相等。

LinkHashMap實現類

LinkHashMap是使用雙向鏈表來維護key-value對的次序(其實只考慮了key的次序),該鏈表負責維護Map的迭代順序,迭代順序與key-value對的插入順序一致。

使用Properties讀寫屬性文件

Properties是Hashtable的子類,該對象在處理屬性文件時十分方便。Prooperties類將Map對象和屬性文件關聯起來,從而可以將Map對象中的key-value對寫入屬性文件中,也可以將屬性文件中的“屬性名=屬性值”加載到Map對象中。由于屬性文件中的屬性名和屬性值都是字符串類型,所以Properties里的key、value都是字符串類型的。

該類提供了如下三個方法來修改Properties中的key、value值:

String getProperty(String key):獲取Properties中指定屬性名對應的屬性值,類似于Map中的get(Object key)方法。

String getProperty(String key, String defaultValue): 獲取Properties中指定屬性名對應的屬性值,如果Properties中不存在指定的key時,則該方法指定默認值。

Object setProperty(String key, String value):設置屬性值。

它還提供了兩個讀寫屬性文件的方法:

Void load(InputStream instream):從屬性文件中加載key-value對,將加載到的key-value對追加到Properties中(Properties是Hashtable的子類,他不保證key-value對之間的次序)。

Void store(OutputStream out, String comments):將Properties中的Key-value對輸出到指定的屬性文件中。

SortedMap接口和TreeMap實現類

正如Set接口派生出SortedSet子接口,SortedSet接口有一個TreeSet實現類一樣。Map接口也派生出一個SortedMap子接口,SortedMap接口也有一個TreeMap實現類。

TreeMap就是一個紅黑樹數據結構,每個key-value對作為紅黑樹的一個節點。TreeMap在存儲key-value對(節點),需要根據key對節點進行排序。TreeMap保證所有的key-value對處于有序狀態。TreeMap有兩種排序方式:

自然排序:TreeMap的所有key必須實現Comparable接口,而且所有key必須是同一個類的對象,否則會拋出ClassCastException異常。

定制排序:創建TreeMap時,傳入一個Comparator對象,該對象負責對TreeMap中的key進行排序。采用定制排序不要求TreeMap中的key實現Comparator接口。

TreeMap提供了一系列根據key順序訪問key-value對的方法。

Map.Entry firstEntry():返回該Map中最小key對應的key-value對;如果該Map為空,則返回null。

Object firstKey():返回該Map中最小的key值;如果該Map為空,則返回null。

Map.Entry lastEntry():返回該Map中最大的key所對應的key-value對;如果該Map為空或不存在這樣的key,則都返回null。

Object lastKey():返回該Map中最大的key;如果該Map為空或不存在這樣的key,則返回null。

Map.Entry higherEntry(Object key):返回該Map中大于指定key的后一位key-value對(大于key的最小key)。如果該Map為空,則返回null。

Object higherKey(Object key):返回該Map中大于指定key的最小key;如果該Map為空,則返回null。

Map.Entry lowerEntry(Object key):返回該Map中位于指定key前一位的key-value對(即小于指定key的最大key對應的key-value對);如果該Map為空或不存在這樣的key-value對,則返回null。

Object lowerKey(Object key):返回該Map中位于指定key前一位key(小于指定key的最大key)。如果該Map為空或不存在這樣的key,則返回null。

NavigableMap subMap(Object fromKey, boolean fromInclusive, Object toKey, boolean toInclusive):返回該Map的子Map,其key范圍是從fromKey(是否包括有傳入的第二個參數決定)到toKey(是否包括由第四個參數決定)。

SortedMap subMap(Object fromKey, Object toKey):返回該Map的子Map,其key值得范圍是由fromKey(包括)到toKey(不包括)。

SortedMap tailMap(Object fromKey):返回該Map的子Map,其范圍是大于fromKey(包括)的所有key。

NavigableMap tailMap(Object fromKey, boolean inclusive):返回該Map的子Map,其key值的范圍是大于fromKey(是否包括取決于第二個參數)的所有key。

SortedMap headMap(Object tokey):返回該Map的子Map,其key的范圍是小于tokey(不包括)的所有key。

NavigableMap heapMap(Object tokey, boolean inclusive):返回該Map的子Map,其key的范圍是小于tokey(是否包括取決于第二個參數)的所有key。

WeakHashMap實現類

WeakHashMap與HashMap的用法基本相似。與HashMap的區別在于,HashMap的值保留了對實際對象的強引用,這意味著只要該HashMap對象不被銷毀,該HashMap中的所有key所引用的對象就不會被垃圾回收,hashMap也不會主動刪除這些key-value對;但WeakHashMap只保留了對實際對象的弱引用,這意味著如果WeakHashMap對象的key所引用的對象沒有被其他強引用變量所引用,則這些key所引用的對象可能被垃圾回收,WeakHashMap也可能自動刪除這些key所對應的key-value對。

IdentityHashMap實現類

這個Map實現類的實現機制與HashMap基本類似,但它在處理兩個key值相等時比較獨特:在IdentityHashMap中,當且僅當兩個key嚴格相等(key1==key2)時,IdentityHashMap才認為這兩個key相等;對于普通的HashMap而言,只要key1和key2通過equals()方法比較返回true,且它們的hashCode值相等即可。

EnumMap實現類

EnumMap是一個和枚舉類一起使用的Map實現,EnumMap中的所有key都必須是單個枚舉類的枚舉值。創建EnumMap時必須顯式或隱式的指定它對應的枚舉類。EnumMap具有以下特征:

1.EnumMap在內部以數組的形式保存,所以這種實現形式十分緊湊高效。

2.EnumMap根據key的自然順序(即枚舉值在枚舉類中定義順序)來維護key-value對的順序。當程序通過keySet()、entrySet()、values()等方法便利EnumMap是可以看到這些順序。

3.EnumMap不允許使用null來做為key,但允許null作為value。如果試圖使用null來做為key,程序將拋出NullPointerException異常。

4.創建EnumMap時必須指定一個枚舉類,從而將該EnumMap和指定枚舉類關聯起來。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久12| 亚洲精品999| 日韩av在线一区| 久久精品久久久久久国产 免费| 91精品视频大全| 久久精品国产亚洲精品| 日韩欧美国产高清91| 亚洲欧美资源在线| 亚洲www永久成人夜色| 久久精品电影一区二区| 国产精品ⅴa在线观看h| 91精品国产91久久久久久久久| 亚洲精品视频网上网址在线观看| 欧美成人精品在线观看| 欧美精品一区二区三区国产精品| 亚洲国产精品久久| 久久精品久久久久| 色999日韩欧美国产| 亚洲国产精品福利| 久久久精品视频在线观看| 96sao精品视频在线观看| 国产精品视频免费在线| 欧美日韩午夜剧场| 国产美女高潮久久白浆| 成人午夜黄色影院| 日韩亚洲一区二区| 成人免费看吃奶视频网站| 视频直播国产精品| 久久精品电影一区二区| 欧美高清激情视频| 日韩免费av片在线观看| 欧美性极品少妇精品网站| 欧美成人精品一区二区三区| 日韩精品在线免费观看| 欧美精品videossex88| 国产精品久久久久久久久免费看| 欧美精品videosex性欧美| 51色欧美片视频在线观看| 欧美高清视频一区二区| 精品视频在线播放色网色视频| 亚洲国产欧美一区二区三区久久| www.日韩av.com| 亚洲一区久久久| 亚洲日韩欧美视频一区| 久久久天堂国产精品女人| 国产精品综合网站| 欧美性生交xxxxxdddd| 亚洲黄色www| 成人有码视频在线播放| 亚洲护士老师的毛茸茸最新章节| 国产精品视频色| 日韩免费电影在线观看| 亚洲成人在线视频播放| 久久精品人人爽| 久久久久久12| 综合网中文字幕| 亚洲视频综合网| 国产热re99久久6国产精品| 午夜精品视频网站| 人人爽久久涩噜噜噜网站| 欧美激情精品久久久久久蜜臀| 欧美日韩免费在线| 亚洲区bt下载| 成人妇女淫片aaaa视频| 一区二区在线免费视频| 久久男人资源视频| 国产精品青青在线观看爽香蕉| 成人黄色网免费| 成人a在线视频| 欧美亚洲在线视频| 欧美视频中文字幕在线| 久久精品福利视频| 国产精品视频1区| 国产精品自产拍在线观| 国产97在线视频| 久久夜色精品国产欧美乱| 久久精品小视频| 日韩黄色高清视频| 精品国产一区二区三区四区在线观看| 日韩视频免费观看| 福利视频第一区| 国产精品欧美久久久| 精品久久久久久久久久国产| 色中色综合影院手机版在线观看| 777国产偷窥盗摄精品视频| 国产精品久久久久久久久久久久| 日韩精品极品毛片系列视频| 26uuu国产精品视频| 国产福利精品av综合导导航| 亚洲新声在线观看| 亚洲第一色在线| 91探花福利精品国产自产在线| 国产精品海角社区在线观看| 在线播放日韩av| 亚洲伊人久久大香线蕉av| 午夜精品久久久久久久白皮肤| 久久久久女教师免费一区| 色偷偷91综合久久噜噜| 亚洲最新av在线| 色偷偷888欧美精品久久久| 中文字幕日韩精品有码视频| 欧美肥老妇视频| 亚洲欧洲av一区二区| 日韩欧美国产免费播放| 亚洲欧洲xxxx| 久久久久久久久久久国产| 97精品一区二区视频在线观看| 精品久久久久久久大神国产| 成人国产精品一区二区| 久久精品电影网站| 精品久久久久久久久久国产| 亚洲欧美国产一区二区三区| 成人欧美在线观看| 一区二区三区国产视频| 欧美日韩国产精品一区二区不卡中文| 欧美成年人视频| 日韩亚洲精品电影| 国产成人亚洲综合青青| 欧美日韩国产综合新一区| 欧美日韩亚洲精品内裤| 日韩精品在线电影| 久99九色视频在线观看| 热re99久久精品国产66热| 欧美精品一区三区| 91国产视频在线播放| 日本在线精品视频| 亚洲精品第一页| 91免费看片在线| 91精品啪aⅴ在线观看国产| 国产丝袜精品第一页| 欧美性一区二区三区| 国产精品国产亚洲伊人久久| 欧美性猛交xxxx富婆弯腰| 丝袜亚洲欧美日韩综合| 欧美疯狂做受xxxx高潮| 日韩在线观看免费高清完整版| 国产在线视频欧美| 中文字幕欧美日韩va免费视频| 久久精品视频在线观看| 成人在线视频网| 日韩大片在线观看视频| 亚洲国产精品久久91精品| 欧美日韩在线免费观看| 精品亚洲一区二区三区在线播放| 91免费视频网站| 亚洲欧美在线磁力| 欧美在线影院在线视频| 在线播放国产一区中文字幕剧情欧美| 91欧美视频网站| 欧美成人亚洲成人| 亚洲一区二区三| 国产精品www| 久久香蕉国产线看观看av| 国外视频精品毛片| 不卡在线观看电视剧完整版| 91久久精品久久国产性色也91| 欧美国产欧美亚洲国产日韩mv天天看完整| 成人免费网站在线观看| 91日韩在线视频| 91亚洲国产成人久久精品网站| 爽爽爽爽爽爽爽成人免费观看| 亚洲欧美综合v| 高清欧美性猛交xxxx| 日本欧美在线视频|