java集合類中常見的Map類型HashMap的常用方法
Map的遍歷分2種:
1、(推薦,尤其容量大時)遍歷Map.entrySet():它的每一個元素都是Map.Entry對象,這個對象中,放着的就是Map中的某一對key-value;
2、遍歷Map.keySet():它是Map中key值的集合,我們可以通過遍歷這個集合來讀取Map中的元素;
下面給出map幾種遍歷方法:
import java.util.*; import java.util.Map.Entry; /** * map集合和set集合一樣是(元素存放)無序的 */ public class MapTest{ public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); //小技巧:將所有Map變量聲明爲Map,而不是任何具體實現,可獲得最佳map性能 map.put("a", "zhangsan"); map.put("b", "lisi"); map.put("c", "wangwu"); System.out.println(map); //方法一遍歷map(現獲取key,再由key獲得value值) Set<String> keySet = map.keySet(); for(Iterator<String> iterator = keySet.iterator();iterator.hasNext();){ String key = iterator.next(); String value = map.get(key); System.out.println(key+"="+value); } System.out.println("**********************"); //方法二(法一的簡便寫法,熟練掌握foreach的用法) for(String key : map.keySet()){ System.out.println(key+"="+map.get(key)); } System.out.println("**********************"); //方法三(推薦使用該方法遍歷map集合,尤其是容量大時) for(Map.Entry<String, String> entry : map.entrySet()){ //map.entrySet()中存放鍵值對的對象,通過getKey()獲得key,getValue()獲得value System.out.println(entry.getKey()+"="+entry.getValue()); } System.out.println("**********************"); //方法四 Set<Entry<String, String>> entrySet = map.entrySet(); for(Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();iterator.hasNext();){ Map.Entry<String, String> entry = iterator.next(); System.out.println(entry.getKey()+"="+entry.getValue()); } System.out.println("**********************"); //方法五(遍歷的是所有的值,沒有鍵) for(String value : map.values()){ System.out.println(value); } } }
下面給出一hashmap遍歷的簡單實例:
import java.util.*; //統計一句英語的簡單統計各個單詞出現的次數 public class MapTest{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("請輸入一句英語,單詞間用空格隔開:"); String sentence = sc.nextLine(); //以空格作爲分隔符將句子分割成多個單詞 String[] arr = sentence.split(" "); // 鍵(key)代表着單詞,值(value)代表着次數 Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < arr.length; i++) { if (!map.containsKey(arr[i])) { //第一次出現時將其值設爲1 map.put(arr[i], 1); } else { // 說明map中,存在該元素,則將其值累加 map.put(arr[i],map.get(arr[i])+1 ); } } System.out.println("統計單詞出現的個數,結果如下:"); /* for(String key : map.keySet()){ * System.out.println(key+"="+map.get(key)); */ } //下面解法稍微複雜些,爲了更好的理解迭代器Iterator Set<String> set = map.keySet(); //注意Iterator中for循環的寫法 for (Iterator<String> it = set.iterator(); it.hasNext();) { //由Collection接口派生的兩個接口是List和Set,遍歷Collection中的每一個元素使用iterator()的方法 //iterator()方法返回一個迭代子iit,使用該迭代子即可逐一訪問集合中每一個元素 String key = it.next(); Integer value = map.get(key);//get(key)返回value值 System.out.println(key + "=" + value); } } }
運行結果如圖所示:
提供一道有關HashMap的實例http://macxiao.blog.51cto.com/9606147/1586998