激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - Java教程 - 基于HashMap遍歷和使用方法(詳解)

基于HashMap遍歷和使用方法(詳解)

2020-12-12 16:46Java之家 Java教程

下面小編就為大家帶來一篇基于HashMap遍歷和使用方法(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

map的幾種遍歷方式:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Map< String, String> map = new HashMap<>();
 
 map.put("aa", "@sohu.com");
 
 map.put("bb","@163.com");
 
 map.put("cc", "@sina.com");
 
 System.out.println("普通的遍歷方法,通過Map.keySet遍歷key和value");//普通使用,二次取值
 
 for (String key : map.keySet()) {
 
  System.out.println("key= "+key+" and value= "+map.get(key));
 
 }
 
 System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
 
 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
 
 while(it.hasNext()){
 
  Map.Entry<String, String> entry = it.next();
 
  System.out.println("key= "+entry.getKey()+" and value= "+entry.getValue());
 
 }
 
 System.out.println("通過Map.entrySet遍歷key和value"); //推薦這種,特別是容量大的時候
 
 for(Map.Entry<String, String> entry : map.entrySet()){
 
  System.out.println("key= "+entry.getKey()+" and value= "+entry.getValue());
 
 }
  System.out.println(“通過Map.values()遍歷所有的value,但不能遍歷key”);
 
 for(String v : map.values()){
 
  System.out.println("value = "+v);
 
 }

HashMap和Hashtable的聯系和區別

實現原理相同,功能相同,底層都是哈希表結構,查詢速度快,在很多情況下可以互用,早期的版本一般都是安全的。

HashMap和Hashtable都實現了Map接口,但決定用哪一個之前先要弄清楚它們之間的分別。主要的區別有:線程安全性,同步(synchronization),以及速度。

HashMap幾乎可以等價于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受為null的鍵值(key)和值(value),而Hashtable則不行)。

HashMap是非synchronized,而Hashtable是synchronized,這意味著Hashtable是線程安全的,多個線程可以共享一個Hashtable;而如果沒有正確的同步的話,多個線程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好。

另一個區別是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以當有其它線程改變了HashMap的結構(增加或者移除元素),將會拋出ConcurrentModificationException,但迭代器本身的remove()方法移除元素則不會拋出ConcurrentModificationException異常。但這并不是一個一定發生的行為,要看JVM。這條同樣也是Enumeration和Iterator的區別。

由于Hashtable是線程安全的也是synchronized,所以在單線程環境下它比HashMap要慢。如果你不需要同步,只需要單一線程,那么使用HashMap性能要好過Hashtable。

HashMap不能保證隨著時間的推移Map中的元素次序是不變的。

hashmap的特點

HashMap是map接口的子類,是將鍵映射到值的對象,其中鍵和值都是對象,不是線程安全的

hashMap用hash表來存儲map的鍵

  key是無序唯一,可以有一個為null

  value無序不唯一,可以有對個null

linkedHashMap使用hash表存儲map中的鍵,并且使用linked雙向鏈表管理順序

我們用的最多的是HashMap,在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。如果需要輸出的順序和輸入的相同,那么用LinkedHashMap 可以實現,它還可以按讀取順序來排列.

HashMap是一個最常用的Map,它根據鍵的hashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多只允許一條記錄的鍵為NULL,允許多條記錄的值為NULL。 HashMap不支持線程同步,即任一時刻可以有多個線程同時寫HashMap,可能會導致數據的不一致性。

如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。LinkedHashMap保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的。

HashMap可以通過下面的語句進行同步:

Map m = Collections.synchronizeMap(hashMap);

幾大常用集合的效率對比

基于HashMap遍歷和使用方法(詳解)

以上這篇基于HashMap遍歷和使用方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美一级免费在线观看 | 看一级大毛片 | 毛片av网| 成人在线97 | 91精品国产91久久久久久 | xxxxhdhdhdhd日本 | 青青草好吊色 | 国产999视频在线观看 | 色欲香天天天综合网站 | 免费黄色大片网站 | 成人三级电影网站 | 国产伊人色 | 日本大片在线播放 | 国产一级毛片网站 | 欧美一区二区三区四区五区动图 | 亚洲精品 在线播放 | 在火车上摸两乳爽的大叫 | 色的综合 | 91av在线免费播放 | 欧美福利视频一区二区三区 | 欧美一级片在线 | 成年人在线视频免费 | 欧美a区| 永久免费不卡在线观看黄网站 | 免费嗨片首页中文字幕 | 亚洲精品欧美在线 | 91精品国产乱码久久桃 | 性片免费看 | 国产精品jk白丝蜜臀av软件 | 伊人欧美视频 | 羞羞网站在线看 | 色中色在线播放 | 国产一及毛片 | 久久精品日产第一区二区三区 | 欧洲伊人网 | 九色p| 俄罗斯论理片 | 久久草在线视频国产 | 国产一区在线免费 | 亚洲国产成人久久成人52 | 欧美精品一区自拍a毛片在线视频 |