Map是一种以“键/值”对的形式存在的集合,其中每个键映射到一个值,几乎所有通用 Map 都使用哈希映射。位于java.util包中。其子类有HashMap,TreeMap。HashMap缺省的情况下是线程非安全的;当多线程访问时可能需要提供同步机制,key和value的值允许为null,键值允许重复,没有顺序。
普通JAVA类遍历Map集合
Map map=new HashMap();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
//遍历的方法
map.keySet();//键集合
map.values();//值集合
map.entrySet();//键值集合
第一种方式:遍历键,通过键取值
用法1
Set set = map.keySet();
for (Object key : set) {
System.out.println("键:"+key+" 值:"+map.get(key));
}
用法2
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
用法3
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while(it.hasNext()){
String key = it.next();
String value = map.get(key);
System.out.println(value);
}
用法4//推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
===========================================================
第二种方式:遍历键集合
用法1:
Iterator it=map.keySet().iterator();
while(it.hasNext()){
System.out.println("键:"+it.next());
}
用法2:
//利用keyset进行遍历,它的优点在于可以根据你所想要的key值得到你想要的 values,更具灵活性!!
public static void workByKeySet(Map<String, Student> map) {
Set<String> key = map.keySet();
for (Iterator it = key.iterator(); it.hasNext();) {
String s = (String) it.next();
System.out.println(map.get(s));
}
}
用法3
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
===========================================================================
第三种方式:遍历键值集合
Map集合不能使用iterator遍历,但是可以用下面的方式遍历Map
public static void main(String[] args){
Map map = new HashMap();
map.put(1, "A");
map.put('a', "B");
map.put("A", "C");
map.put(new Object(), "D");
用法1
Iterator it2=map.entrySet().iterator();
while(it2.hasNext()){
System.out.println(map.get(iterator.next()).toString());
}
//方法2
Iterator<Map.Entry<String,String>> its = map.entrySet().iterator();
while(its.hasNext()){
Map.Entry<String,String> m= its.next();
System.out.println(m.getKey()+":::"+m.getValue());
}
}
================================================================================
第四种:
//比较复杂的一种遍历在这里,呵呵~~他很暴力哦,它的灵活性太强了,想得到什么就能得到什么
public static void workByEntry(Map<String, Student> map) {
Set<Map.Entry<String, Student>> set = map.entrySet();
for (Iterator<Map.Entry<String, Student>> it = set.iterator(); it.hasNext();) {
Map.Entry<String, Student> entry = (Map.Entry<String, Student>) it.next();
System.out.println(entry.getKey() + "--->" + entry.getValue());
}
}