zoukankan      html  css  js  c++  java
  • 七、Map接口

    Map是一个接口,同时也属于集合中的一种,同样用来存储引用数据类型的变长的容器,用于存储具有映射关系的数据,因此Map集合中的元素是以键值对的形式存在的
    key:键
    value:值

    注意:key和value之间存在单向一一对应的关系,【即通过一个key,就可以找到它对应的唯一的确定的value】

    特点:
    a、Map集合中的元素是以键值对的形式存在的,一个键只能对应一个值,不允许只有键没有值,也不允许一个键对应多个值,在同一个集合中不能出现多个相同的键
    b、Map集合中的元素是按照键来排重的,不允许键重复,但是值是可以重复的【如果添加了集合已经存在的键,那么后添加的回覆盖掉之前添加的】
    c、键和值都必须是引用数据类型
    d、键和值都可以是null常量

    1.HashMap
    特点:
    a、无序,
    b、底层采用的数据结构是:哈希算法

    总结:
    HashMap和HashSet之间的区别;
    HashMap HashSet
    ==================================================================================================
    实现了Map接口 实现了Set接口
    存储键值对 存储对象
    通过put()方法添加元素 通过add()方法添加元素
    效率高,使用键直接获取值 效率相对较低

    【面试题】:HashMap的工作原理
    基于哈希算法实现,通过put方法和get方法进行存取对象,当我们将键值对传递给put方法,它会调用对象的hashCode()方法来计算hashCode值,然后在内存中找到位置进行存储对象,当获取对象,通过get方法来进行获取,但是,在获取过程中或调用equals方法找到正确的键值对,然后返回值的对象

    2、LinkedHashMap
    特点:
    a、有序的【键值对的添加的顺序和存储的顺序相同】
    b、底层存数采用的数据结构是:链表

    3、Hashtable
    Hashtable和HashMap之间的关系就类似与Vector和ArrayList之间的关系

    特点:
    a、在用法上和HashMap完全相同
    b、Hashtable是一个古老的集合【从JDK1.0开始就有了】
    c、Hashtable是线程安全的,HashMap是线程不安全的
    d、Hashtable性能是相对比较低的,不推荐使用Hashtable
    e、Hashtable不允许将null作为键和值,如果试图将null作为Hashtable的键值的时候会发生空指针异常,但是HashMap是允许使用的

    4、TreeMap
    TreeMap是Map集合的一个实现类,同时也是SortedMap的实现类

    特点:
    a、有序的,排序方式:自然排序和定制排序
    b、底层采用的数据结构是:二叉树【红黑树】

  • 相关阅读:
    Codeforces 492E Vanya and Field
    Codeforces 492D Vanya and Computer Game
    HDU 5125 magic balls(线段树+DP)
    HDU 5124 lines
    Codeforces 488D Strip (set+DP)
    FZU 2079 最大获利(线段树+DP)
    Codeforces 490D Chocolate
    Codeforces 490C Hacking Cypher
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/lsp-lsp/p/7344082.html
Copyright © 2011-2022 走看看