Map接口和常用方法

Map接口实现类的特点

  • Map 用于保存具有映射关系的数据 key-value
  • Map中的key和value可以是任何引用类型的数据 会封装到HashMap$Node对象中
  • Map的key不允许重复
  • Map的value可以重复
  • Map的key可以为null value也可以为null key为null只能有一个 value为null可以多个
  • 常用String类作为May的key
  • key和value之间存在单项一对一关系 即通过指定的key总能找到对应的value

Map接口遍历方法

  • 通过map.keySet获取到set 通过增强for和迭代器获取
  • 通过 map.values()获取value 并通过Collection 增强for 迭代器获取value
  • 通过 map.entrySet() 获取到set 通过增强for迭代器获取 其中需要Map.Entry m=(Map.Entry)entry向下转型
{
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("邓超",new Book("三国",100));
        map.put("邓超","孙俪"); //替换
        map.put("王宝强","马蓉");
        map.put("宋哲","马蓉");
        map.put("刘林波",null);
        map.put(null,"刘亦菲");
        map.put("鹿晗","关晓彤");

        //第一组 先取出所有key 通过key 取出对应的value
        //1 增强for
        System.out.println("=====第一种=======");
        Set keyset = map.keySet();
        for (Object obj :keyset) {
            System.out.println(obj+"-"+map.get(obj));
        }

        System.out.println("====第二种======");

        //2迭代器
        Iterator iterator = keyset.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next+"-"+map.get(next));
        }

        System.out.println("=======第二组 第3种========");
        //这里可以使用所有的collections使用的遍历方法
        //1 增强for 只能遍历所有的value
        Collection values = map.values();
        for (Object o :values) {
            System.out.println(o);
        }

        System.out.println("=====第4种=====");

        //迭代器 所有的value
        Iterator iterator1 = values.iterator();
        while (iterator1.hasNext()){
            Object next2 = iterator1.next();
            System.out.println(next2);
        }

        System.out.println("=====第三组 增强for");
        //第三组 EntrySet
        Set entrySet = map.entrySet();
        for (Object entry :entrySet) {
            //将entry转成Map.Entry
            Map.Entry m=(Map.Entry)entry;
            System.out.println(m.getKey()+"-"+m.getValue());
        }

        System.out.println("========第三组 迭代器");
        Iterator iterator2 = entrySet.iterator();
        while (iterator2.hasNext()){
            Object next = iterator2.next();
            System.out.println(next);
        }
    }
}

HashMap小结

  • Map接口的常用实现类 HashMap Hashtable Properties
  • HashMap是Map接口使用评率最高的实现类
  • HashMap是以 key-value对方式来存储数据
  • key不能重复 但是值可以重复 允许使用null键和null值
  • 如果添加相同key 则会覆盖原来的key-value 等同于修改(key不会替换 val会替换)
  • 与HashSet一样 不保证映射的顺序 因为底层是以hash表的方式来存储的
  • HashMap没有实现同步 因此线程是不安全的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值