除了增强的for循环使代码简洁大气,结构清晰外,我们还可以看到对Map键值不同的取值方式的效率介绍。
在这儿也是对增强for循环的相见恨晚啊!
之前的使用情况
- 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