• Map和List


    MapList

    当把Map中的key-value对当成单独的集合元素来对待时,MapSet就统一起来了。

    Map集合是一个关联数组,它包含两组值:一组是所有key组成的集合,因为Map集合的key不允许重复,而且Map不会保存key加入的顺序,因此这些key可以组成一个Set集合;另外一组是value组成的集合,因为Map集合的value完全可以重复,而且Map可以根据key来获取对应的value,所以这些value可以组成一个List集合。实际上Mapvalues方法并未返回一个List集合。

    import java.util.HashMap;

    import java.util.TreeMap;

    publicclass MapValueTest {

         publicstaticvoid main(String[] args){

           HashMap<String,Double> scores = new HashMap<String,Double>();

           scores.put("yuwen", 89.0);

           scores.put("shuxue", 83.0);

           scores.put("yingwen", 80.0);

           System.out.println(scores.values());

           System.out.println(scores.values().getClass());

           TreeMap<String,Double> health = new TreeMap<String,Double>();

           health.put("height", 173.0);

           health.put("weight", 71.0);

           System.out.println(health.values());

           System.out.println(health.values().getClass());

         }

    }

    Output

    [83.0, 89.0, 80.0]

    class java.util.HashMap$Values

    [173.0, 71.0]

    class java.util.TreeMap$Values

    HashMapTreeMap2个集合的values()方法返回值确实是包含Map中所有value的集合,但它们并不是List对象,而分别是HashMap$Values对象和TreeMap$Values对象。

    HashMapTreeMap22Map类的values()方法的实现完全相同。当程序第一次调用2Map对象的values方法时,它们会新建一个values对象,并将该values对象赋给values实例变量;当程序下次调用values()方法时,将直接以values实例变量作为返回值。由此可见,对于HashMapTreeMap而言,它们values()方法返回值的区别主要体现在各自values内部类的实现上。

    从底层实现上来看,Set和Map很相似,如果从用法的角度来看,Map和List也有很大的相似之处:

    Map接口提供了get(K key)方法允许Map对象根据key来取得value;

    List接口提供了get(int index)方法允许List对象根据元素索引来取得value.

    对于List接口而言,它仅按元素的加入顺序保存了一系列的Java对象。

    Map和List底层实现了并没有太大的相似之上,只是在用法上存在一些相似之处;既可以是List相当于所有key都是int类型的Map,也可以说Map相当于索引是任意类型的List.

    JS的对象有点类似于Map结构,也是多个key-value对组成,只是习惯上JS对象的key-value称为属性名,属性值。对于JS对象而言,除了可使用属性语法来方法属性值之外,完全可以用数组语法来访问它的属性值。

  • 相关阅读:
    K8s系列【四、kubernetes核心组件工作流程及原理】
    K8s系列【五、Kubernetes实战演练】
    Linux系列【服务器安全篇】
    K8s系列【三、Kubernetes架构】
    Docker系列【离线安装指定版本的docker】
    K8s系列【配置Harbor私有仓库】
    Docker系列【docker: Error response from daemon: ...(iptables failed: iptables wait t nat A DOCKER p tcp d 0/0 dport 80 j DNAT】
    K8s系列【一、为什么要学习K8s?】
    K8s系列【二、K8s是什么?】
    CF1628AMeximum Array【二分】
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3230735.html
Copyright © 2020-2023  润新知