Ⅰ java遍歷Map的幾種方法分析
1.先初始化一個map
public class TestMap {
public static Map<Integer, Integer> map = new HashMap<Integer, Integer>();
}
2.keySet values
如果只需要map的key或者value,用map的keySet或values方法無疑是最方便的
// KeySet 獲取key
public void testKeySet() {
for (Integer key : map.keySet()) {
System.out.println(key);
}
}
// values 獲取value
public void testValues() {
for (Integer value : map.values()) {
System.out.println(value);
}
}
3.keySet get(key)
如果需要同時獲取key和value,可以先獲取key,然後再通過map的get(key)獲取value
需要說明的是,該方法不是最優選擇,一般不推薦使用
// keySet get(key) 獲取key and value
public void testKeySetAndGetKey() {
for (Integer key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
}
4.entrySet
通過對map entrySet的遍歷,也可以同時拿到key和value,一般情況下,性能上要優於上一種,這一種也是最常用的遍歷方法
// entrySet 獲取key and value
public void testEntry() {
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
5.Iterator
對於上面的幾種foreach都可以用Iterator代替,其實foreach在java5中才被支持,foreach的寫法看起來更簡潔
但Iterator也有其優勢:在用foreach遍歷map時,如果改變其大小,會報錯,但如果只是刪除元素,可以使用Iterator的remove方法刪除元素
// Iterator entrySet 獲取key and value
public void testIterator() {
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
// it.remove(); 刪除元素
}
}
Ⅱ Map介面都有哪些方法
void clear()
從此映射中移除所有映射關系(可選操作)。
boolean containsKey(Object key)
如果此映射包含指定鍵的映射關系,則返回 true。
boolean containsValue(Object value)
如果此映射為指定值映射一個或多個鍵,則返回 true。
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射關系的 set 視圖。
boolean equals(Object o)
比較指定的對象與此映射是否相等。
V get(Object key)
返回此映射中映射到指定鍵的值。
int hashCode()
返回此映射的哈希碼值。
boolean isEmpty()
如果此映射未包含鍵-值映射關系,則返回 true。
Set<K> keySet()
返回此映射中包含的鍵的 set 視圖。
V put(K key, V value)
將指定的值與此映射中的指定鍵相關聯(可選操作)。
void putAll(Map<? extends K,? extends V> t)
從指定映射中將所有映射關系復制到此映射中(可選操作)。
V remove(Object key)
如果存在此鍵的映射關系,則將其從映射中移除(可選操作)。
int size()
返回此映射中的鍵-值映射關系數。
Collection<V> values()
返回此映射中包含的值的 collection 視圖。
打開API查看就都知道了
Ⅲ java中map有哪幾種實現方式,並且比較異同
Map是一種把鍵對象和值對象進行關聯的容器,而一個值對象又可以是一個Map,依次類推,這樣就可形成一個多級映射。對於鍵對象來說,像Set 一樣,一個Map容器中的鍵對象不允許重復,這是為了保持查找結果的一致性;如果有兩個鍵對象一樣,那你想得到那個鍵對象所對應的值對象時就有問題了,可 能你得到的並不是你想的那個值對象,結果會造成混亂,所以鍵的唯一性很重要,也是符合集合的性質的。當然在使用過程中,某個鍵所對應的值對象可能會發生變 化,這時會按照最後一次修改的值對象與鍵對應。對於值對象則沒有唯一性的要求。你可以將任意多個鍵都映射到一個值對象上,這不會發生任何問題(不過對你的 使用卻可能會造成不便,你不知道你得到的到底是那一個鍵所對應的值對象)。
Map有兩種比較常用的實現:HashMap和TreeMap,WeakMap。HashMap 也用到了哈希碼的演算法,以便快速查找一個鍵,TreeMap則是對鍵按序存放,因此它便有一些擴展的方法,比如firstKey(),lastKey() 等,你還可以從TreeMap中指定一個范圍以取得其子Map。鍵和值的關聯很簡單,用pub(Object key,Object value)方法即可將一個鍵與一個值對象相關聯。用get(Object key)可得到與此key對象所對應的值對象,WeakMap這個用於內存自動釋放的。
Ⅳ java中hashmap有哪些常用方法
Mapmap=newHashMap();map.put("測試",1);map.put("測試2",2);System.out.println(map.get("測試2"));map.put("測試2",3);System.out.println(map.get("測試2"));輸出結果是:23
Ⅳ java中如何使用map存取數據
java中使用map存取數據的方法如下:
1、需要指定其中的K,V;k=keyv=value。
Ⅵ Java遍歷Map的幾種方式的效率對比
遍歷Map的方式有很多,通常場景下我們需要的是遍歷Map中的Key和Value,那麼推薦使用的、效率最高的方式是:
public static void main(String[] args)
{
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("111", "222");
Set<Map.Entry<String, String>> entrySet = hm.entrySet();
Iterator<Map.Entry<String, String>> iter = entrySet.iterator();
while (iter.hasNext())
{
Map.Entry<String, String> entry = iter.next();
System.out.println(entry.getKey() + "\t" + entry.getValue());
}
}
Ⅶ map集合有幾種遍歷方式
方法一 在for-each循環中使用entries來遍歷
這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
注意:for-each循環在java 5中被引入所以該方法只能應用於java 5或更高的版本中。如果你遍歷的是一個空的map對象,for-each循環將拋出NullPointerException,因此在遍歷前你總是應該檢查空引用。
方法二 在for-each循環中遍歷keys或values。
如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍歷,而不是用entrySet。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
//遍歷map中的鍵
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//遍歷map中的值
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
該方法比entrySet遍歷在性能上稍好
方法三使用Iterator遍歷
使用泛型:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
不使用泛型:
Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = " + key + ", Value = " + value);
}
方法四、通過鍵找值遍歷(效率低)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);
}
總結
如果僅需要鍵(keys)或值(values)使用方法二。
如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。
否則使用方法一(鍵值都要)。
Ⅷ java遍歷map幾種簡單方法
代碼如下:
importjava.util.HashMap;
importjava.util.Map;
publicclassApp{
publicstaticvoidmain(String[]args){
Map<String,Object>map=newHashMap<>();
map.put("Name","Barry");
map.put("Gender","Male");
map.put("Age",25);
//第一種遍歷方式
for(Map.Entry<String,Object>entry:map.entrySet()){
System.out.println(entry.getKey()+"="+entry.getValue());
}
//第二種遍歷方式
map.forEach((key,value)->{
System.out.println(key+"="+value);
});
//通過遍歷key,然後再獲取value
for(Stringkey:map.keySet()){
System.out.println(key+"="+map.get(key));
}
//單獨遍歷values
for(Objectvalue:map.values()){
System.out.println(value);
}
}
}
Ⅸ java Map方法
if(freq==null){
m.put(r,1);
}else{
m.put(r,freq+1);
}
Ⅹ java中map的常用遍歷方法有哪些
ava中map的常用遍歷的具體方法有:
一 、在for-each循環中使用entries來遍歷。這是最常見的並且在大多數情況下也是最可取的遍歷方式。在鍵值都需要時使用。
二、 在for-each循環中遍歷keys或values。如果只需要map中的鍵或者值,你可以通過keySet或values來實現遍歷,而不是用entrySet。
三、使用Iterator遍歷。
四、通過鍵找值遍歷(效率低)。
總結:如果僅需要鍵(keys)或值(values)使用方法二。如果你使用的語言版本低於java 5,或是打算在遍歷時刪除entries,必須使用方法三。否則使用方法一(鍵值都要)。