Java集合:Map

Map是使用键值对的映射表型数据结构

Map集合需要注意的地方:

  • Map也是一个接口,真正使用的时候我们使用它的实现类HashMap来进行操作。
  • Map的key(键)不能重复,如果向一个map中同时put进去两个键相同的数据,那么后面的这个key所对应的值会覆盖之前的。

Map的遍历:

遍历Map的key:

遍历key值可以使用for each遍历Map对象的keySet()方法返回的set集合,注意,set集合是不包含重复值的。

如下:

public class Test3 {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>(16);
        map.put("xiaoMing","game");
        map.put("xiaoHong","art");
        map.put("xiaoGang","loser");
        for (String s : map.keySet()) {
            System.out.println(s);
        }
    }
}

遍历Map集合的key和value:

同时遍历keyvalue可以使用for each循环遍历Map对象的entrySet()集合,它包含每一个key-value映射:

如下:

public class Test3 {
    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>(16);
        map.put("xiaoMing","game");
        map.put("xiaoHong","art");
        map.put("xiaoGang","loser");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}

警告:

遍历Map时,不可假设输出的key是有序的!

Map的equals方法:

我们可以注意到,实际上,当我们在Map中查询一个值的时候,我们传入的key他们可能只是能容相同,但实际上,他们确实不同的对象。比如下面的:

public class Test4 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>(16);
        map.put("数学",99);
        map.put("英语",89);
        map.put("语文",87);
        String english = new String("英语");
        System.out.println(map.get(english));
    }
}

这里同样我们传入的是内容相同但是对象不同的实体,但是他们都能正确的找到value,这个是因为Map在内部比较的时候,也是使用的eauals方法:,这一点和List查找元素需要正确覆写equals()是一样的,即正确使用Map必须保证:作为key的对象必须正确覆写equals()方法。

我们经常使用String作为key,因为String已经正确覆写了equals()方法。但如果我们放入的key是一个自己写的类,就必须保证正确覆写了equals()方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值