疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java中Map集合的常用遍历方法及HashMap的应用实例


 

        Map的遍历大体有3种:

  1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中,放着的就是Map中的某一对key-value;

  2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来读取Map中的元素;

  3、遍历Map.values():它是Map中value的集合,我们可以直接通过这个集合遍历Map中的值,却不能读取key。

  [java] view plaincopy

  package com.sort;

  import java.util.HashMap;

  import java.util.Iterator;

  import java.util.Map;

  import java.util.Set;

  import java.util.Map.Entry;

  /**

  * map集合和set集合一样是无序的

  * map集合遍历的几种常用方法

  * @author Owner

  *

  */

  public class MapTest5 {

  public static void main(String[] args) {

  Map map = new HashMap();

  map.put("a", "zhangsan");

  map.put("b", "lisi");

  map.put("c", "wangwu");

  // System.out.println(map);

  /**

  * 方法一遍历map

  */

  Set keySet = map.keySet();

  for(Iterator iterator = keySet.iterator();iterator.hasNext();){

  String key = iterator.next();

  String value = map.get(key);

  System.out.println(key+"="+value);

  }

  System.out.println("**********************");

  /**

  * 方法二遍历map

  */

  for(String key : map.keySet()){

  System.out.println(key+"="+map.get(key));

  }

  System.out.println("**********************");

  /**

  * 方法三遍历map,推荐使用该方法遍历map集合,尤其是容量大时

  */

  for(Map.Entry entry : map.entrySet()){

  System.out.println(entry.getKey()+"="+entry.getValue());

  }

  System.out.println("**********************");

  /**

  * 方法四遍历map

  */

  Set> entrySet = map.entrySet();

  for(Iterator> iterator = entrySet.iterator();iterator.hasNext();){

  Map.Entry entry = iterator.next();

  System.out.println(entry.getKey()+"="+entry.getValue());

  }

  System.out.println("**********************");

  /**

  * 方法五,这种方法遍历的是所有的值

  */

  for(String value : map.values()){

  System.out.println(value);

  }

  }

  }

  Map中元素存放是无序的

  HashMap注意事项:

  1,HashMap底层维护一个数组,我们向HashMap中所放置的对象实际上是存储在该数组当中;

  2,当向HashMap中put一对键值时,它会根据key的hashCode值计算出一个位置,该位置就是此对象准备往数组中存放的位置。

  HashMap应用举例:控制台输入一句英语,简单统计各个单词出现的次数

  [java] view plaincopy

  package com.sort;

  import java.util.HashMap;

  import java.util.Iterator;

  import java.util.Map;

  import java.util.Scanner;

  import java.util.Set;

  /**

  * 统计一句英语的简单统计各个单词出现的次数

  *

  * @author Owner

  *

  */

  public class MapTest3 {

  public static void main(String[] args) {

  Scanner sc = new Scanner(System.in);

  System.out.println("请输入一句英语,单词间用空格隔开:");

  String sentence = sc.nextLine();

  String[] arr = sentence.split(" ");

  // 键代表着单词,值代表着次数

  Map map = new HashMap();

  for (int i = 0; i < arr.length; i++) {

  if (!map.containsKey(arr[i])) {

  map.put(arr[i], 1);

  } else {

  // 说明map中,存在该元素

  int num = map.get(arr[i]);

  map.put(arr[i], ++num);

  }

  }

  System.out.println("统计单词出现的个数,结果如下:");

  Set set = map.keySet();

  for (Iterator iterator = set.iterator(); iterator.hasNext();) {

  String key = iterator.next();

  Integer value = map.get(key);

  System.out.println(key + "=" + value);

  }

  }

  }

  输出结果:

  请输入一句英语,单词间用空格隔开:

  I love U China I am pround to be a Chinese

  统计单词出现的个数,结果如下:

  to=1

  U=1

  love=1

  am=1

  a=1

  pround=1

  Chinese=1

  I=2

  China=1

  be=1