導航:首頁 > 編程語言 > java的map使用方法

java的map使用方法

發布時間:2023-01-09 01:03:30

java中的map函數怎麼用

map不是函數,是一個對象
可以
Map
map
=
new
HashMap();創建
Map就是鍵值對,
map.put("1","123");
map.put("2","234");
map.get("1")//123
map.get("2")//234

② java map .put 方法

Map.Put方法原理:

Map將對象table賦值給tab,並以tab是否為空作為是否第一次調用此方法的判斷,是則resize()並給tab,n賦值;

獲取tab的第i個元素:根據 (n - 1) & hash 演算法 ,計算出i找到,如果為空,調用newNode() ,賦值給tab第i個;

如果不為空,可能存在2種情況:hash值重復了,也就是put過程中,發現之前已經有了此key對應的value,則暫時e = p;

至於另外一種情況就是位置沖突了,即根據(n - 1) & hash演算法發生了碰撞,再次分情況討論;

1、以鏈表的形式存入;

2、如果碰撞導致鏈表過長(大於等於TREEIFY_THRESHOLD),就把鏈表轉換成紅黑樹;

3、最後,如果e不為空,將e添加到table中(e.value 被賦值為 putVal()中的參數 value);

(2)java的map使用方法擴展閱讀:

HashMap存儲鍵值對時,發現找到的位置上已經存儲了元素。

情況一:調用該元素鍵的equals方法與該位置上元素的鍵進行比較,如果返回ture,則視新鍵與已經存在的鍵相同,用新值去更新舊值,然後put方法返回舊值。

情況二:調用該元素鍵的equals方法與該位置上元素的鍵進行比較,如果返回false,則新鍵與已經存在的鍵不相同,任然可以將新的元素存儲在該位置。

HashMap的put()方法返回null的特殊情況:

要是已經存在鍵的映射,但是值是null,那麼調用put()方法再更新鍵的值時,put()方法會把舊值null返回,這是返回null的特殊情況。存在元素時,要是找到的位置上沒有鍵的映射,put()方法也是返回null。

③ javajava中Map類有什麼作用,具體怎麼用

Map.Entry--Map的內部類,描述Map中的按鍵/數值對。
SortedMap---擴展Map,使按鍵保持升序排列
下面以HashMap為例。
public static void main(String args[]){HashMap hashmap = new HashMap();
hashmap.put("Item0", "Value0");
hashmap.put("Item1", "Value1");
hashmap.put("Item2", "Value2");
hashmap.put("Item3", "Value3");
Set set = hashmap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext(){Map.Entry mapentry = (Map.Entry) iterator.next();
System.out.println(mapentry.getkey() + "/" + mapentry.getValue());}}注意,這里Map的按鍵必須是唯一的,比如說不能有兩個按鍵都為null。
如果用過它,就會知道它的用處了。資料:java.util 中的集合類包含 Java 中某些最常用的類。 最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。 Map 提供了一個更通用的元素存儲方法。 Map 集合類用於存儲元素對(稱作「鍵」和「值」),其中每個鍵映射到一個值。 從概念上而言,您可以將 List 看作是具有數值鍵的 Map。 而實際上,除了 List 和 Map 都在定義 java.util 中外,兩者並沒有直接的聯系。本文將著重介紹核心 Java 發行套件中附帶的 Map,同時還將介紹如何採用或實現更適用於您應用程序特定數據的專用 Map。 Java 核心類中有很多預定義的 Map 類。 在介紹具體實現之前,我們先介紹一下 Map 介面本身,以便了解所有實現的共同點。 Map 介面定義了四種類型的方法,每個 Map 都包含這些方法。 下面,我們從兩個普通的方法(表 1)開始對這些方法加以介紹。 put(Object key, Object value)將指定值與指定鍵相關聯
盡管您可能注意到,縱然假設忽略構建一個需要傳遞給 putAll() 的 Map 的開銷,使用 putAll() 通常也並不比使用大量的 put() 調用更有效率,但 putAll() 的存在一點也不稀奇。 這是因為,putAll() 除了迭代 put() 所執行的將每個鍵值對添加到 Map 的演算法以外,還需要迭代所傳遞的 Map 的元素。 但應注意,putAll() 在添加所有元素之前可以正確調整 Map 的大小,因此如果您未親自調整 Map 的大小(我們將對此進行簡單介紹),則 putAll() 可能比預期的更有效。 迭代Map 中的元素不存在直接了當的方法。 如果要查詢某個 Map 以了解其哪些元素滿足特定查詢,或如果要迭代其所有元素(無論原因如何),則您首先需要獲取該 Map 的「視圖」。 有三種可能的視圖(參見表 3) 前兩個視圖均返回 Set 對象,第三個視圖返回 Collection 對象。 就這兩種情況而言,問題到這里並沒有結束,這是因為您無法直接迭代 Collection 對象或 Set 對象。要進行迭代,您必須獲得一個 Iterator 對象。 因此,要迭代 Map 的元素,必須進行比較煩瑣的編碼 Iterator keyValuePairs = aMap.entrySet().iterator();Iterator keys = aMap.keySet().iterator();Iterator values = aMap.values().iterator();
值得注意的是,這些對象(Set、Collection 和 Iterator)實際上是基礎 Map 的視圖,而不是包含所有元素的副本。 這使它們的使用效率很高。 另一方面,Collection 或 Set 對象的 toArray() 方法卻創建包含 Map 所有元素的數組對象,因此除了確實需要使用數組中元素的情形外,其效率並不高。 我運行了一個小測試(隨附文件中的 Test1),該測試使用了 HashMap,並使用以下兩種方法對迭代 Map 元素的開銷進行了比較: int mapsize = aMap.size();Iterator keyValuePairs1 = aMap.entrySet().iterator();for (int i = 0; i < mapsize; i++){ Map.Entry entry = (Map.Entry) keyValuePairs1.next(); Object key = entry.getKey(); Object value = entry.getValue(); ...}Object[] keyValuePairs2 = aMap.entrySet().toArray();for (int i = 0; i < rem; i++) {{ Map.Entry entry = (Map.Entry) keyValuePairs2[i]; Object key = entry.getKey(); Profilers in Oracle JDeveloperOracle JDeveloper 包含一個嵌入的監測器,它測量內存和執行時間,使您能夠快速識別代碼中的瓶頸。 我曾使用 Jdeveloper 的執行監測器監測 HashMap 的 containsKey() 和 containsValue() 方法,並很快發現 containsKey() 方法的速度比 containsValue() 方法慢很多(實際上要慢幾個數量級!)。 (參見圖 1 和圖 2,以及隨附文件中的 Test2 類)。 Object value = entry.getValue(); ...}
此測試使用了兩種測量方法: 一種是測量迭代元素的時間,另一種測量使用 toArray 調用創建數組的其他開銷。 第一種方法(忽略創建數組所需的時間)表明,使用已從 toArray 調用中創建的數組迭代元素的速度要比使用 Iterator 的速度大約快 30%-60%。 但如果將使用 toArray 方法創建數組的開銷包含在內,則使用 Iterator 實際上要快 10%-20%。 因此,如果由於某種原因要創建一個集合元素的數組而非迭代這些元素,則應使用該數組迭代元素。 但如果您不需要此中間數組,則不要創建它,而是使用 Iterator 迭代元素。 表3: 返回視圖的 Map 方法: 使用這些方法返回的對象,您可以遍歷 Map 的元素,還可以刪除 Map 中的元素。 entrySet()返回 Map 中所包含映射的 Set 視圖。 Set 中的每個元素都是一個 Map.Entry 對象,可以使用 getKey() 和 getValue() 方法(還有一個 setValue() 方法)訪問後者的鍵元素和值元素keySet()返回 Map 中所包含鍵的 Set 視圖。 刪除 Set 中的元素還將刪除 Map 中相應的映射(鍵和值)values()返回 map 中所包含值的 Collection 視圖。 刪除 Collection 中的元素還將刪除 Map 中相應的映射(鍵和值)
表4 中列出了 Map 訪問方法。Map 通常適合按鍵(而非按值)進行訪問。 Map 定義中沒有規定這肯定是真的,但通常您可以期望這是真的。 例如,您可以期望 containsKey() 方法與 get() 方法一樣快。 另一方面,containsValue() 方法很可能需要掃描 Map 中的值,因此它的速度可能比較慢。 containsKey(Object key)如果 Map 包含指定鍵的映射,則返回 truecontainsValue(Object value)如果此 Map 將一個或多個鍵映射到指定值,則返回 true
對使用 containsKey() 和 containsValue() 遍歷 HashMap 中所有元素所需時間的測試表明,containsValue() 所需的時間要長很多。 實際上要長幾個數量級! (參見圖 1 和圖 2,以及隨附文件中的 Test2)。 因此,如果 containsValue() 是應用程序中的性能問題,它將很快顯現出來,並可以通過監測您的應用程序輕松地將其識別。 這種情況下,我相信您能夠想出一個有效的替換方法來實現 containsValue() 提供的等效功能。 但如果想不出辦法,則一個可行的解決方案是再創建一個 Map,並將第一個 Map 的所有值作為鍵。 這樣,第一個 Map 上的 containsValue() 將成為第二個 Map 上更有效的 containsKey()。 網友評論:2
HashMap和Hashtable的區別2007-04-05 12:07HashMap是Java 1.2引進的Map介面的一個實現 Hashtable的方法是同步的,而HashMap的方法不是。 這就意味著,雖然你可以不用採取任何特殊的行為就可以在一個多線程的應用程序中用一個Hashtable,但你必須同樣地為一個HashMap提供外同 步。一個方便的方法就是利用Collections類的靜態的synchronizedMap()方法,它創建一個線程安全的Map對象,並把它作為一個 封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。這么做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比 如在一個單線程的應用程序中),而且同步增加了很多處理費用。

④ java中如何使用map存取數據

java中使用map存取數據的方法如下:

1、需要指定其中的K,V;k=keyv=value。

⑤ java教程之Map應該怎麼用

Map集合:
確保唯一性依賴於hashCode()和equals方法
HashSet底層依賴於HashMap,TreeSet底層依賴於TreeMap
Map集合石雙列的,Collection是單列的
Map的鍵唯一,Collection的子體系Set是唯一的
Map集合的數據結構值針對鍵有效,跟值無關,Collection集合的數據結構是針對元素有效
添加:V put(K key,V value);
如果鍵是第一次儲存就直接存,返回null,如果不是,就用值把以前覆蓋並返回舊值
刪除:void clear();清空
V remove(Object key);根據鍵刪除鍵值對元素,返回值
判斷:
boolean containsKey(0bject key) 判斷集合是否包含指定的鍵
boolean containsValue(Object value)判斷集合是否包含指定的值
boolean isEmpty() 判斷集合是否為空
獲取:
V get(Object key) 根據鍵獲取值
Set<K> keySet() 獲取集合中所有鍵的集合
Collection<V> values() 獲取集合中所有值的集合
長度:
int size() 返回集合中的鍵值對數
遍歷:
1.
Set<> keySet = hm.keySet();
hm.get(key);
2.
Set<Map.Entry<,>> = hm.entrySet();
Map.Entry<,>.getKey()
Map.Entry<,>.getValue()
TreeMap對鍵進行比較

⑥ java map 的用法

map是個介面

用都是用HasMap等實現Map介面的類

創建:Map<String,String> map = new HashMap<String,String>();
插入元素:map.put("1","a");
移除元素: map.remove("1");
清空: map.clear();

具體參照java API
java.uitl.HashMap

⑦ java中Map類有什麼作用,具體怎麼用呢

map是以鍵值對來存儲數據的,例如:
Map map = new HashMap();
map.put("移動","10086");
String c = map.get("移動");
結果c="10086」;
簡單來說,map就像我們手機的電話本,用map.put("移動","10086"),就是在電話本保存了移動的電話,然後當你想拿移動的電話時候就用String c = map.get("移動");就可以拿到電話號碼了。其實學習結合生活實際比較容易理解,也學得快。

⑧ Java中便歷Map的幾種方法

importjava.util.HashMap;
importjava.util.Iterator;
importjava.util.Map.Entry;

publicclassMapDemo{
publicstaticvoidmain(String[]args){
//准備好需要遍歷的Map
HashMap<String,Integer>map=newHashMap<String,Integer>();
map.put("Tom",85);
map.put("Jack",97);
test1(map);
test2(map);
test3(map);
test4(map);

}

//方法一:迭代器方式
//特點:效率高,速度快,但是代碼量多
publicstaticvoidtest1(HashMap<String,Integer>map){
Iterator<Entry<String,Integer>>it=map.entrySet().iterator();
while(it.hasNext()){
Entry<String,Integer>e=it.next();
System.out.println("name:"+e.getKey()+" score:"+e.getValue());
}
}

//方法二:map.entrySet()for循環
//特點:效率也較高,速度較快,且寫法比方法一簡單
publicstaticvoidtest2(HashMap<String,Integer>map){
for(Entry<String,Integer>e:map.entrySet()){
System.out.println("name:"+e.getKey()+" score:"+e.getValue());
}
}

//方法3map.keySetfor循環
// 特點:效率較慢
publicstaticvoidtest3(HashMap<String,Integer>map){
for(Stringkey:map.keySet()){
System.out.println("name:"+key+" score:"+map.get(key));
}
}

//方法四:forEach
//特點速度較慢,但是代碼少,簡潔;(需要Java8或以上版本的支持)
publicstaticvoidtest4(HashMap<String,Integer>map){
map.forEach((k,v)->System.out.println("name:"+k+" score:"+v));
}
}

四種方法之間的效率比較

(test1≈test2)>(test3≈test4)

推薦: 數據量特別大的時候 使用方法1: 代碼長,但是效率高

數據量較少的, 那麼使用方法4: 代碼簡潔而優雅~

閱讀全文

與java的map使用方法相關的資料

熱點內容
黑馬程序員路徑大全 瀏覽:998
saas平台PHP 瀏覽:333
雲伺服器科學計算配置怎麼選 瀏覽:649
jar解壓命令 瀏覽:609
php正則問號 瀏覽:299
無線已加密不可上網是怎麼了 瀏覽:464
什麼app可以免費做手機 瀏覽:375
異性下載什麼app 瀏覽:680
51單片機程序單步視頻 瀏覽:241
家庭寬頻如何連接伺服器 瀏覽:119
汽車高壓泵解壓 瀏覽:772
上門正骨用什麼app 瀏覽:760
安卓為什麼免費使用 瀏覽:397
加密貨幣都有哪些平台 瀏覽:628
python和matlab難度 瀏覽:391
python爬蟲很難學么 瀏覽:574
小米解壓積木可以組成什麼呢 瀏覽:816
為什麼滴滴出行app還能用 瀏覽:566
怎麼升級手機android 瀏覽:926
php權威編程pdf 瀏覽:998