map与set的遍历
map有四种方式:
1.直接遍历 keySet
2.使用Iterator //注意next放回的对象是map.Entry<K,V>,而使用的iterator是通过entrySet返回的一个set得到的
3.直接遍历 entrySet
4.遍历values(); //这种不能得到key
代码事例:
package test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Map的遍历 * * @author lin * */ public class MapTest { public static void main(String[] args) { HashMap<String, Integer> map = new HashMap<String, Integer>(); map.put("a", 1); map.put("b", 2); map.put("c", 3); /* * 用keySet() */ Set<String> set = map.keySet(); for(String key : set){ int value = (Integer) map.get(key); System.out.println("key:" + key + " value:"+value); } /* * 用entrySet() * 注意:返回的是一个Set * 这个方法的Iterator.next()返回的才是Map.Entry<K,V> ,如果Set * 用这个方法的话,那么放回的不是Map.Entry<K,V> * 反正就是要主要Map与Set用这个方法遍历的不同 */ Set<Map.Entry<String, Integer>> set2 = map.entrySet(); Iterator it = set2.iterator(); while(it.hasNext()){ Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>)it.next(); String key = entry.getKey(); int value = entry.getValue(); System.out.println("key:" + key + " value:" + value); } /*当map容量很大时,这个效率最高 * 直接遍历entrySet() */ for(Map.Entry<String, Integer> entry : map.entrySet()){ System.out.println("key:" + entry.getKey() + " value:" + entry.getValue()); } /* * 通过values遍历 * 注意这种方法得不到key的 */ for(Integer value : map.values()){ System.out.println("key:" + map.get(value) + " value:" + value); } } }
package test; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetTest { public static void main(String[] args) { Set<String> set = new HashSet<String>(); set.add("a"); set.add("b"); set.add("c"); Iterator it = set.iterator(); while(it.hasNext()){ String key = (String)it.next(); System.out.println("key:" + key); } } }