Java遍历Map的五种方法(Java8中新lambda方法)

遍历Map的方法, 我总结了5种, CoreJava中给出的是第一种使用forEach+lambda表达式, 我认为这种方法应该是最好的, 但是只能在Java8之后的版本使用;

建议优先使用第一种和第四种(类似第二种);

遍历Map:
第一种可以使用Map的forEach方法加上Java8的lambda表达式:

aMap.forEach( (k,v)->{System.out.println(k+" "+v);} );

第二种可以使用Map.Entry来遍历Map的条目:

for(Map.Entry<String, String> it : aMap.entrySet()){
	System.out.println(it.getKey()+"="+it.getValue());
	System.out.println(it);
}

第三种可以使用for结合Map的keySet和values方法来遍历:

for(String a : aMap.keySet()){
	System.out.println(a);
}
for(String a : aMap.values()){
	System.out.println(a);
}

第四种是使用迭代器, 这种是看起来比较熟悉而且效率挺高的, 但是要注意, 不能在使用for循环访问迭代器的同时使用remove操作, javadoc说这样会发生不可预期的错误, 如果希望迭代的同时删除元素, 可以使用while来遍历:

for(Iterator<Map.Entry<String, String>> it = aMap.entrySet().iterator();it.hasNext();){
	Map.Entry<String, String> itt = it.next();
	System.out.println(itt.getKey()+"="+itt.getValue());
	System.out.println(itt);
}

当然还有第五种是在遍历keySet的时候调用get方法获取对应的值, 但是这种方法太捞了, 效率很低, 不提了, 就上一段测试代码吧:

for(String i : aMap.keySet()){
	System.out.println(i+"="+aMap.get(i));
}

测试代码如下:

import java.util.*;

class test16 {
	public static void main(String[] args) {
		Map<String,String> aMap = new TreeMap<>();
		aMap.put("Aluka", "AluWife");
		aMap.put("GodV", "mifengaaa");
		aMap.put("zz", "lym");
		aMap.forEach( (k,v)->{System.out.println(k+" "+v);} );
		System.out.println();
		aMap.remove("zz");
		for(Map.Entry<String, String> it : aMap.entrySet()){
			System.out.println(it.getKey()+"="+it.getValue());
			System.out.println(it);
		}
		System.out.println();
		for(String a : aMap.keySet()){
			System.out.println(a);
		}
		for(String a : aMap.values()){
			System.out.println(a);
		}
		System.out.println();
		for(Iterator<Map.Entry<String, String>> it = aMap.entrySet().iterator();it.hasNext();){
			Map.Entry<String, String> itt = it.next();
			System.out.println(itt.getKey()+"="+itt.getValue());
			System.out.println(itt);
		}
	}
}

输出如下:

Aluka AluWife
GodV mifengaaa
zz lym

Aluka=AluWife
Aluka=AluWife
GodV=mifengaaa
GodV=mifengaaa

Aluka
GodV
AluWife
mifengaaa

Aluka=AluWife
Aluka=AluWife
GodV=mifengaaa
GodV=mifengaaa

贴一些map和sortedmap的常用方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U7xVz63q-1662517598204)(https://ws4.sinaimg.cn/large/006tNbRwgy1fw7bo65jxsj310o0py4e1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ke2jWbJZ-1662517598204)(https://ws1.sinaimg.cn/large/006tNbRwgy1fw7boi6dyzj310809y798.jpg)]

]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值