zoukankan      html  css  js  c++  java
  • 16、集合--Map接口

    Map源码地址:https://www.cnblogs.com/Mrchengs/p/10842091.html

    前提概要:

    Map接口用于保存具有映射关系的数据

    Map集合中保存了两组值

    1、用于保存Map里的key

    2、用于保存Map里的value

    key和value都可是任何引用类型数据

    Map的key不允许重复

    即同一个map对象的任何两个key都通过equals()方法比较总还是false

    key和value之间是一一对应的关系

    即通过key就可以找到唯一的确定的value

    从Map中取数据时,只要指定的key就可以取出对应的value

    基本介绍:

    常用方法:

    添加、删除操作

    1、put(Object key,Object value):将互相关联的键值对存入

    2、Object remove(Object key):从映像中删除与key相关的映射

    3、put(Map t):j将来自特定映像的t全部添加到印象中

    4、clear():从映像中删除所有的映射

    查询操作

    get(Object key):根据关键字key进行查询对应的value

    containsKey(Object key):判断映像中是否存在关键值key

    containsValue(Object value):判断映像中是否 存在值value

    size():返回当前映射的数量

    isEmpty():判断映像中是否有任何映像

    视图操作:

    keySet():返回映像中所有关键字的视图集

    values():返回映像中所有值的视图集

    entrySet():返回Map.Entry对象的视图集,即关键字/值

    因为映射是唯一的,所以要用Set支持。

    接口和类

    1、Map.Entry接口

    通过map接口中的entrySet()方法可以返回一个实现Map.entry接口的对象集合

    集合中的每个对象都是底层Map中一个特定的键值对

    Map.Entry接口集合的迭代器可以获取每一个条目的键值对对值进行更改

    当条目通过迭代器返回后,除非是迭代器自身remove()方法或者迭代器返回的条目的setValue()方法

    其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义

    ---Object getKey():返回条目的关键字

    ---Object getValue():返回条目的值

    ---Object setValue(Object value):将相关映像中的值修改为value,并且返回旧值

    2、SortedMap接口

    用来保持键的有序顺序

    public interface SortedMap<K,V> extends Map<K,V> {
        //返回对关键字进行排序时的比较器
        Comparator<? super K> comparator();
      //返回[fromKey,toKey)范围内的SortedMap的视图集
        SortedMap<K,V> subMap(K fromKey, K toKey);
      //返回SortedMap的一个视图,其内各个元素的key都小于toKey
        SortedMap<K,V> headMap(K toKey);
      //返回SortedMap的一个视图集,其内各个元素的key都大于等于fromKey
        SortedMap<K,V> tailMap(K fromKey);
      //返回映像中第一个关键字
        K firstKey();
      //返回影像中最后一个关键字
        K lastKey();
      
        Set<K> keySet();
    
        Collection<V> values();
    
        Set<Map.Entry<K, V>> entrySet();
    }

    SortedMap接口是映像的视图(子集),在里面有两个端点提供了访问方法

    除了排序是作用于映射的键以外处理SortedMap和处理SotredSet一样

    添加到SortedMap实现类的元素必须实现Comparable接口

    否则必须给他的构造函数提供一个COmparator的接口实现

    类TreeMap是它的唯一实现

    因为对于映射来说,每个键只能对应一个值

    如果在添加一个“键/值”对时比较两个键产生了为0的返回值

    那么原始键对应的值被新值代替

    如果两个元素不相等则应该修改比较方法

    让比较方法和equals()方法效果一致

    3、AbstractMap抽象类

    和其他抽象集合相似,类AbstractMap覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码

    如果两个映射大小相等,包含相同的键且每个键在着两个映射中对应的值都相同,则这两个映射相等

    映射的哈希码是映射元素哈希码的总和

    其中每个元素是Map.Entry接口的一个实现

    所以不论映射内部顺序如何,两个相等映射会报告相同的哈希码

    4、HashMap额TreeMap类

    提供了两个Map的实现

    在Map中插入、删除和定位是,HashMap是最好的选择

    如果要求按自然排序或自定义顺序遍历键那么选择TreeMap会更好

    使用hashMap要求添加的键类明确定义了hashCode()和equals()方法的实现

    TreeMap没有调优选项,因为该树总处于平衡状态

    ①、HashMap类

    为了优化hashMap空间使用,可以调优初始容量和负载因子

    --HashMap():构建一个空的哈希映像

    --HashMap(Map m):构建一个哈希映像,并且添加映像m为所有的映射

    --HashMap(int initialCapacity):构建一个拥有特定容量的空的哈希映像

    --HashMap(int initalCapacity,float liadFactor):构建一个拥有特定容量和加载引子的空的哈希映像

    ②、TreeMap类

    TreeMap没有调优选项,该树总处于平衡状态

    --TreeMap():构建一个空的映像树

    --TreeMap(Map m):构建一个映像树,并且添加映像m中所有元素

    --TreeMap(Comparator c):构建一个映像树,并且使用特定的比较器对关键字进行排序

    --TreeMap(SortedMap s):构建一个映像树,添加映像树s中的所有映射,并且使用与有序映像s相同的比较排序

  • 相关阅读:
    eclipse中的Invalid text string (xxx).
    在jsp文件中出现Unknown tag (c:out)
    eclipse 界面复原
    ecilpse 纠错插件
    Multiple annotations found at this line:- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    Port 8080 required by Tomcat v9.0 Server at localhost is already in use. The server may already be running in another process, or a system process may be using the port.
    调用第三方https接口
    调用第三方http接口
    创建带值枚举
    spring整合redis之Redis配置文件
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10850727.html
Copyright © 2011-2022 走看看