遍历Map的几种方法 entrySet 和 keySet

遍历Map时,一般会用到两种方法

Map.entrySet()

Map.keySet()

首先这两种方法返回的都是Set集合,
区别在于,第一种集合里是 Map.entry (会有key-value的键值对)类型的对象;
而第二种集合里是String对象(假设创建Map时key值是String类型的)。

下面上代码看一下:

public class testforcycle {

    public static void main(String[] args) {

        HashMap<String, Object> hs = new HashMap();
        hs.put("a", 1);
        hs.put("b", 2);
        
        System.out.println("foreach0");
        foreach0(hs);
        System.out.println("foreach1");
        foreach1(hs);
        System.out.println("foreach2");
        foreach2(hs);
        System.out.println("foreach3");
        foreach3(hs);
    }
    
    //entrySet 一般写法,建立迭代器
    public static void foreach0(HashMap<String, Object> hs){
        for(Iterator it = hs.entrySet().iterator();it.hasNext();){
            System.out.println(it.next());
        }
    }
    //entrySet 简便写法,本质也是创建迭代器,跟第一种相同
    public static void foreach1(HashMap<String, Object> hs){
        for(Entry<String, Object> a:hs.entrySet()){
            System.out.println(a.getClass());
            System.out.println(a);
        }
    }
    // keySet 简便写法
    public static void foreach2(HashMap<String, Object> hs){
        for(String a:hs.keySet()){
            System.out.println(a);
        }
    }
    //keySet foreach2的完整写法
    public static void foreach3(HashMap<String, Object> hs){
        for(Iterator it=hs.keySet().iterator();it.hasNext();){
            System.out.println(it.next());
        }
    }

}
foreach0
a=1
b=2
foreach1
class java.util.HashMap$Node
a=1
class java.util.HashMap$Node
b=2
foreach2
a
b
foreach3
a
b

说明:
foreach0 和 foreach1 都是取按照 entrySet 方式取的,结果就是键值对,类型也是 java.util.HashMap$Node ,是Entry的一种实现类。

foreach2 和 foreach3 是keyset的,返回结果是String类型的,之后就可以用这个key值来取map的value进行处理了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷风在北京

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值