除了增强的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循环
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));
}
}
也就是比较这两段代码
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));
.