最近经常碰到Map遍历的问题,在网上查找资料后,记录下,权当备忘~~~~~~
这里给出了三种遍历的方式,注释中已说明各自方式的优点。
package edu.hrbeu.cloud.testIterMap;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class IteratorMap {
static Map map = new TreeMap();
public static void addToMap(String classify, String name, String age, String score) {
if(!map.containsKey(classify))
map.put(classify, new Student());
Student st = new Student();
st = map.get(classify);
st.setName(name);
st.setAge(age);
st.setScore(score);
}
public static void init() {
addToMap("A", "张三", "20", "87");
addToMap("B", "李四", "19", "88");
addToMap("C", "王五", "21", "93");
}
///最常规的一种遍历方法
public static void iterByCollection() {
init();
Collection c = map.values();
Iterator it = c.iterator();
for (; it.hasNext();) {
System.out.println(it.next());
}
}
//利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values
public static void iterByKeySet(){
Set key = map.keySet();
for (Iterator it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
System.out.println(map.get(s));
}
}
//比较复杂的一种遍历,它可以得到任何你想得到的
public static void iterByEntry() {
Set> set = map.entrySet();
for (Iterator> it = set.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}
public static void main(String[] args) {
System.out.println("Iterator by Collection");
iterByCollection();
System.out.println("Iterator by KeySet");
iterByKeySet();
System.out.println("Iterator by Entry");
iterByEntry();
}
}