一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java遍历Map方法集合实例

时间:2013-12-02 编辑:简简单单 来源:一聚教程网

遍历Map方法分为两类:

一类是基于map的Entry;map.entrySet();

一类是基于map的key;map.keySet()

而每一类都有两种遍历方式:

a.利用迭代器 iterator;

b.利用for-each循环;


第一种方法是根据map的keyset()方法来获取key的set集合,然后遍历map取得value的值

 代码如下 复制代码

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapTest2
{
public static void main(String[] args)
{
HashMap map = new HashMap();

map.put(“a”,”aaaa”);
map.put(“b”,”bbbb”);
map.put(“c”,”cccc”);
map.put(“d”,”dddd”);

Set set = map.keySet();

for(Iterator iter = set.iterator(); iter.hasNext();)
{
String key = (String)iter.next();
String value = (String)map.get(key);
System.out.println(key+”====”+value);
}
}
}

 

第二种方式是使用Map.Entry来获取:

 代码如下 复制代码

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapTest4
{
public static void main(String[] args)
{
HashMap map = new HashMap();

map.put(“a”,”aa”);
map.put(“b”,”bb”);
map.put(“c”,”cc”);
map.put(“d”,”dd”);

Set set = map.entrySet();

for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next();

String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println(key +” :” + value);
}
}
}

遍历方法三 treemap keySet()遍历

 代码如下 复制代码

  System.out.println("方法四");
  for (Object o : tempMap.keySet()) {
   System.out.println("key=" + o + " value=" + tempMap.get(o));
  }
  System.out.println("11111");

  // java如何遍历Map map = new HashMap   // ArrayList>();
  System.out
    .println("java  遍历Map map = new HashMap ();");
  Map map = new HashMap();
  Set keys = map.keySet();
  Iterator iterator = keys.iterator();
  while (iterator.hasNext()) {
   String key = iterator.next();
   ArrayList arrayList = map.get(key);
   for (Object o : arrayList) {
    System.out.println(o + "遍历过程");
   }
  }
  System.out.println("2222");
  Map mapList = new HashMap();
  for (Map.Entry entry : mapList.entrySet()) {
   String key = entry.getKey().toString();
   List values = (List) entry.getValue();
   for (String value : values) {
    System.out.println(key + " --> " + value);
   }
  }
 }
}


遍历Map的同时时删除指定元素

 代码如下 复制代码

package net.nie.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class HashMapTest {
   private static Map map=new HashMap();
   
   /**  1.HashMap 类映射不保证顺序;某些映射可明确保证其顺序: TreeMap 类
    *   2.在遍历Map过程中,不能用map.put(key,newVal),map.remove(key)来修改和删除元素,
    *   会引发 并发修改异常,可以通过迭代器的remove():
    *   从迭代器指向的 collection 中移除当前迭代元素
    *   来达到删除访问中的元素的目的。 
    *   */
   public static void main(String[] args) {
        map.put(1,"one");
        map.put(2,"two");
        map.put(3,"three");
        map.put(4,"four");
        map.put(5,"five");
        map.put(6,"six");
        map.put(7,"seven");
        map.put(8,"eight");
        map.put(5,"five");
        map.put(9,"nine");
        map.put(10,"ten");
        Iterator> it = map.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry entry=it.next();
            int key=entry.getKey();
            if(key%2==1){
                System.out.println("delete this: "+key+" = "+key);
                //map.put(key, "奇数");   //ConcurrentModificationException
                //map.remove(key);      //ConcurrentModificationException
                it.remove();        //OK
            }
        }
        //遍历当前的map;这种新的for循环无法修改map内容,因为不通过迭代器。
        System.out.println("-------nt最终的map的元素遍历:");
        for(Map.Entry entry:map.entrySet()){
            int k=entry.getKey();
            String v=entry.getValue();
            System.out.println(k+" = "+v);
        }
    }
}

热门栏目