除了增强的for循环使代码简洁大气,结构清晰外,我们还可以看到对Map键值不同的取值方式的效率介绍。 在这儿也是对增强for循环的相见恨晚啊!
之前的使用情况
Java代码 package map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class EntryOfMap { /* * Set<Map.Entry<K,V>>entrySet() 返回此映射中包含的映射关系的 set 视图。 * */ public static void main(String[] args) { String str[] = "java java platform is is is is perfect" .split(" " ); statistics(str); } public static void statistics(String str[]) { Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快 for (int i = 0 ; i < str.length; i++) { Integer freq = m.get(str[i]); m.put(str[i], freq == null ? 1 : freq + 1 ); } // 效率高 Set<Map.Entry<String, Integer>> set = m.entrySet(); Iterator<Map.Entry<String, Integer>> it = set.iterator(); // 下面这一句等价于上面的两句 // Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Integer> me = it.next(); System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值 } // 效率低 Iterator<String> iter = m.keySet().iterator(); while (iter.hasNext()) { String s = iter.next(); System.out.println(s + " " + m.get(s)); } } } 使用增强的for循环 Java代码 package map; import java.util.HashMap; import java.util.Map; public class EntryOfMap2{ /* * 在EntryOfMap.java的基础上使用增强for循环对代码进行了优化 * 由于增强for循环的使用:这样的代码就非常的简洁了哦 */ public static void main(String[] args) { String str[] = "java java platform is is is is perfect" .split(" " ); statistics(str); } public static void statistics(String str[]) { Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快 for (int i = 0 ; i < str.length; i++) { Integer freq = m.get(str[i]); m.put(str[i], freq == null ? 1 : freq + 1 ); } // 用Map.Entry效率高 for (Map.Entry<String, Integer> me : m.entrySet()) System.out.println(me.getKey() + " " + me.getValue()); // 通过键来取值效率低 for (String s : m.keySet()) System.out.println(s + " " + m.get(s)); } } 也就是比较这两段代码 Java代码 1 . // 效率高 Set<Map.Entry<String, Integer>> set = m.entrySet(); Iterator<Map.Entry<String, Integer>> it = set.iterator(); // 下面这一句等价于上面的两句 // Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, Integer> me = it.next(); System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值 } // 效率低 Iterator<String> iter = m.keySet().iterator(); while (iter.hasNext()) { String s = iter.next(); System.out.println(s + " " + m.get(s)); } ------------------这个比较式非常的明显啊---------------------------------2 . // 用Map.Entry效率高 for (Map.Entry<String, Integer> me : m.entrySet()) System.out.println(me.getKey() + " " + me.getValue()); // 通过键来取值效率低 for (String s : m.keySet()) System.out.println(s + " " + m.get(s)); 转自:http://ocaicai.javaeye.com/blog/794922