zoukankan      html  css  js  c++  java
  • 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对象而言,除了可使用属性语法来方法属性值之外,完全可以用数组语法来访问它的属性值。

  • 相关阅读:
    新入行程序员考虑自己是否明白以下这8件事情
    程序猿品种总结你是哪一类?
    利用趣味漫画讲述云计算起源
    设计师遇到瓶颈时的五个解困惑建议
    可以帮助到我今后的程序员生涯的十分钟思考
    oc编程中继承的相关实例
    centos和ubuntu服务器Bash漏洞修复方法
    jQuery经典面试题精选
    phpstudy -sql服务器2008r2 -中控考勤机 -php 组合查询考勤
    bat 批处理测试局域网速度 两端电脑
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3230735.html
Copyright © 2011-2022 走看看