Java中Map接口的遍历

package Test4;

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

import org.junit.Test;

public class MapBianLi {
/*
* 如何遍历Map
* Set keySet()-->遍历Key
* Collection values()-->遍历value
* Set entrySet()-->遍历键值对
* */
@Test
public void test1(){
Map map=new HashMap();

map.put("中国", 1949);
map.put("美国", 1768);
map.put("俄罗斯", 1500);
map.put("日本", 1000);

Set set=map.keySet();
for(Object o:set){
System.out.println(o);
}
}//遍历Map中所有的Key
@Test
public void test2(){
Map map=new HashMap();

map.put("中国", 1949);
map.put("美国", 1768);
map.put("俄罗斯", 1500);
map.put("日本", 1000);

Collection c=map.values();

Iterator i=c.iterator();
while(i.hasNext()){
System.out.println(i.next());
}
}//遍历Map中所有的value
@Test
public void test3(){
Map map=new HashMap();

map.put("中国", 1949);
map.put("美国", 1768);
map.put("俄罗斯", 1500);
map.put("日本", 1000);

Set set=map.keySet();
Iterator i=set.iterator();
while(i.hasNext()){
String str=(String)i.next();

注:此处若写成System.out.println(i.next()+"-->"+map.get(i.next()));      

输出结果:

俄罗斯-->1000
美国-->1949

原因:在一个输出语句中i.next()两次,指针向下西东两次
System.out.println(str+"-->"+map.get(str));
}
}//方式一:遍历所有的键值对
@Test
public void test4(){
Map map=new HashMap();

map.put("中国", 1949);
map.put("美国", 1768);
map.put("俄罗斯", 1500);
map.put("日本", 1000);

Set set=map.entrySet();//把Map中一对一对的键值对转化到Set接口中
for(Object o:set){
Map.Entry entry=(Map.Entry)o;

注:Entry是Map中的一个内部类,指一个键值对
System.out.println(entry.getKey()+"-->"+entry.getValue());
}
}//方式二:遍历所有的键值对
}

上一篇:《Thinking in Java》学习笔记(五)


下一篇:Java Core - Map接口