Java每日笔记之Map接口的介绍以及遍历Map的六大方法

本篇主要是介绍Map接口的特点以及底层机制 有一些关于我对其的一些理解~ 望批评指正

若能对您有所帮助,希望您能推荐给其他人~

1Map与Collection并列存在。用于保存具有映射关系的数据  Key , value

2.Map中的key和value可以是任何引用类型的数据,会封装到HashsetMap$Node中

3.Map中的key不允许重复,原因和Hashset一样   //

4.Map中的value可以重复

5.key和value都可以为null , value也可以为null  ,但要注意key为null,只能有一个,value为null可以有多个(还是因为key的值不能重复)

6.常用String类做key的值

7.通过key值找到value

在这里的我的理解是:

每当put进去一个数据就相当于加了一个节点,而这个节点又可以分为两大块(索引值,值)

这两个节点的类型是不一样的    key是Set类型     value是Collection类型

此图非常重要,有助于我们进一步理解Map遍历机制,当你遍历过程中出错时,多想想多态,

多想想这张图

到这 大家可能就明白   我们可以利用多态原理  来实现以下遍历

map的六大遍历方式    

 直接上代码     学过多态的小伙伴应该可以立刻看懂

package com.map;

import java.util.*;

/**
 * written by 
 * time:2022/11/17 20:03
 */
public class map_01 {
    public static void main(String[] args) {

        Map hashMap = new HashMap();
        hashMap.put("123","jack");
        hashMap.put("456","smith");
        hashMap.put("789","小明");
        Set set = hashMap.keySet();
        System.out.println(set);//01
        for (Object o : set) {
            System.out.println(hashMap.get(o));
        }
        Iterator iterator = hashMap.keySet().iterator();//02
        while (iterator.hasNext()) {
            Object next =  iterator.next();

        }
        Collection collection = hashMap.values();//03
        for (Object o :collection) {
            System.out.println(o);
        }
        //04  迭代器   与上面基本一致

        Set set1 = hashMap.entrySet();
        for (Object o :set1) {
            System.out.println(o);
        }


    }
}

这四种是比较简单的

下面两种可能需要静下心认真去读一读

package com.map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * written by 刘瑞臻
 * time:2022/11/17 21:15
 */
public class map_test {
   public static void main(String[] args) {
      Map hashMap = new HashMap();
      hashMap.put("123","jack");
      hashMap.put("456","smith");
      hashMap.put("789","小明");
      Set set1 = hashMap.entrySet();
      for (Object o :set1) {
         Map.Entry m = (Map.Entry) o;
         System.out.println(m.getKey()+"  "+m.getValue());
      }
      Iterator iterator = hashMap.entrySet().iterator();
      while (iterator.hasNext()) {
         Object next =  iterator.next();
         Map.Entry z = (Map.Entry) next;
         System.out.println(z.getKey()+"  "+z.getValue());
      }

   }
}

总结:

装着key - value的节点真正的类型是Entry   我们好好利用这一点  再结合Java多态性质,

便可以通过节点中的key or value任意一个 对其全部进行遍历

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值