如何遍歷Map中的物件
眾所周知,java中Iterator、Collection和Map都是頂層介面。在遍歷集合Collection時,可以使用迭代器Iterator,加快遍歷速度。但是對於Map不是集合,內部不含有iterator,那麼該如何遍歷Map中的物件呢?
首先要明確,Map是將Key對映到Value的物件,每個鍵最多對應一個值,必須得保證key的唯一性。故當map中存在相同key時,值會被後者覆蓋掉。而且Map不同於Collection儲存單列元素,其儲存的是雙列元素,在沒有迭代器的情況下,取出雙列元素需要好好動動腦子。
這裡用到map中的Set<k> keySet()、Set<Map.Entry<K,V>>entrySet()
方法。前者返回map對映關係中所包含的key的檢視(set集合),後者將鍵和值的對映關係作為物件存在set集合中,型別是Map.Entry(介面,含有 k getKey()、v getValue()、v setValue(v value)
等方法)。
這樣,通過將map轉成set,就可以利用set集合中的迭代器獲取到每一個鍵,在獲取對應的值,進行輸出列印。
以簡單demo為例:
“cbacbaa”獲取該字串的每一個字母出現次數,要求列印結果為a(3)b(2)c(2).
設計思想:分別用keySet和entrySet實現。
package cn.ishuai.p1.map;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class CountStr {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s="sdfsdff";
char []cha=s.toCharArray();
Map<Character,Integer>map=new TreeMap<Character,Integer>();
for(char i:cha){
Integer value=map.get(i);
if(value==null) map.put(i, 1);
else map.put(i, value+1);
}
keySetNum(map);
entrySetNum(map);//兩種不同遍歷方式
}
private static void entrySetNum(Map<Character, Integer> map) {
// TODO Auto-generated method stub
Set<Map.Entry<Character, Integer>>set=map.entrySet();
Iterator<Map.Entry<Character,Integer>>it=set.iterator();
while(it.hasNext()){
Map.Entry<Character,Integer>me=it.next();
Character cha=me.getKey();
Integer inte=me.getValue();
System.out.println(cha+"("+inte+")");
}
}
private static void keySetNum(Map<Character, Integer> map) {
// TODO Auto-generated method stub
Set<Character>set=map.keySet();
Iterator<Character> it=set.iterator();
while(it.hasNext()){
char cha=(char) it.next();//換成character
Integer value=map.get(cha);
System.out.println(cha+"("+value+")");
}
}
}
結果:
a(3)
b(2)
c(2)
相關文章
- Java中如何遍歷Map物件的4種方法Java物件
- vue遍歷map物件Vue物件
- 【Java中遍歷Map物件的4種方法】Java物件
- Java遍歷Map物件的四種方式Java物件
- js的map遍歷和array遍歷JS
- java中遍歷map的集中方法Java
- Map迴圈遍歷
- MVC遍歷map集合MVC
- map的四種遍歷方式
- Java遍歷Map集合的方法Java
- Map集合&&Map集合的不同遍歷【keySet()&&entrySet()】
- JS 物件的遍歷JS物件
- JS中遍歷陣列、物件的方式JS陣列物件
- 26_map遍歷.goGo
- jquery遍歷得到的 Map 資料,jQuery
- Map集合的四種遍歷方式
- React中兩種遍歷資料的方法(map、forEach)React
- JS遍歷物件的方式JS物件
- map遍歷知識總結
- 關於Map集合的遍歷總結
- 遍歷陣列物件陣列物件
- Web前端遍歷物件應該如何操作呢?Web前端物件
- 如何高效的遍歷Map?你常用的不一定是最快的
- JS中陣列與物件的遍歷方法例項JS陣列物件
- ES6遍歷物件物件
- js物件遍歷順序JS物件
- JS遍歷物件的幾種方法JS物件
- Unity遍歷物件serialized的屬性Unity物件Zed
- 影片直播系統原始碼,java中Map遍歷的三種方式原始碼Java
- js技巧用Map集合代替Array遍歷JS
- 遍歷陣列的常用方法forEach,filter,map等陣列Filter
- JS中的遍歷JS
- 如何遍歷 HashMap,遍歷HashMap 的 5 種最佳方式HashMap
- JavaScript遍歷物件方法總結JavaScript物件
- HashMap原始碼:聊聊Map的遍歷效能問題(一)HashMap原始碼
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- 深度優先遍歷,廣度優先遍歷實現物件的深拷貝物件
- 遍歷物件和陣列的方法總結物件陣列
- 遍歷陣列和物件的方法都有哪些?陣列物件