在容器中使用增强的for循环,简洁大气,结构清晰

本文对比了两种遍历Java中Map的不同方式:一种是通过Map.Entry的方式,另一种是通过键来取值。前者效率更高,代码更加简洁。文章还介绍了如何使用增强for循环进一步简化代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[color=indigo]
除了增强的for循环使代码简洁大气,结构清晰外,我们还可以看到对Map键值不同的取值方式的效率介绍。

在这儿也是对增强for循环的相见恨晚啊!
[/color]


[color=blue]
之前的使用情况
[/color]

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));
}

}
}


[color=blue]
使用增强的for循环
[/color]

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));

}
}

[color=blue]
也就是比较这两段代码
[/color]

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));



.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值