首页 > 其他分享 >第12章. 映射(Map)

第12章. 映射(Map)

时间:2023-12-06 20:55:48浏览次数:30  
标签:Map 遍历 Key 映射 boolean 12 key 顺序

映射(Map)


  • Map在有些变成语言中也叫作字典(比如在Python中)

  • Map的每一个Key是唯一的,Value可以不是唯一的

  • Map中的每一个Key对应一个Value

一、Map的接口设计

public interface Map<K, V> {
    int size;
    boolean isEmpty();
    void clear();
    V put(K key, V value);
    V get(K key);
    boolean containsKey(K key);
    boolean containsValue(V value);
    void traversal(Visitor<K, V> visitor);
    
    public static abstract class Visitor<K, V> {
        boolean stop;
        public abstract boolean visit(K key, V value);
    }
}

类似Set,Map可以直接利用之前学习的链表、二叉搜素树(AVL树、红黑树)等数据结构来实现。

二、直接由红黑树(RBTree)实现TreeMap

红黑树节点上存放的是K和V,即一个节点上既有key又有value。

  • 通过RBTree实现的TreeMap
  • 时间复杂度(平均)
    • 添加、删除、搜素:O(logn)
  • 特点:
    • Key必须具备可比较性
    • 元素的分布是有顺序的
  • 在实际应用中,很多时候的需求
  • Map中存储的元素不需要讲究顺序
  • Map中的Key不需要具备可比较性
  • 不考虑顺序、不考虑Key的可比较性,Map有更好的实现方案,平均时间复杂度可以达到O(1)
  • 那就是采取哈希表来实现Map

三、哈希表实现HashMap

HashMap底层通过哈希表来实现

四、LinkedHashMap

在HashMap的基础上维护元素的添加顺序,使得遍历的结果遵从添加顺序。(不要求从小到大,只是要求遍历按照元素添加的顺序)。

五、总结

  1. 对遍历没有要求,是无序遍历的,就使用HashMap(底层是哈希表+红黑树,默认是根据桶的顺序遍历的)
  2. 要求key遍历顺序是从小到大的,就使用TreeMap(底层是红黑树)
  3. 要求遍历顺序是按照添加顺序的,就使用LinkedHashMap

标签:Map,遍历,Key,映射,boolean,12,key,顺序
From: https://www.cnblogs.com/keyongkang/p/17880515.html

相关文章

  • 12/6每日总结
    今天继续学习了注意力机制,尤其学了添加了attention的seq2seq模型,还学习了自注意力机制,理解了attention机制的精髓使用注意力机制的seq2seq之前提到使用两个循环神经网络的编码器解码器结构实现了seq2seq的学习,实现机器翻译的功能循环神经网络编码器将可变序列转换为固定形状的上......
  • 每日总结12.6
    百度图像增强与特效SDK实验今天在完成实验的过程中遇到了一个问题,通过调用接口生成的图片格式为base64格式需要转化为图片格式,下面为转码的部分类:packagecom.baidu.test;importjava.io.*;importjava.util.Base64;publicclassImageUtils{publicstaticbool......
  • 12.6每日总结
    今天进行了软件构造的实验二,实验二:百度图像增强与特效SDK实验(2023.12.6日完成)    任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。    任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。    任务三:完成图像增强GUI相关功能代码并测试调用,要求上......
  • 不再支持安卓 7.0!谷歌Chrome浏览器120稳定版发布
    今天,谷歌面向所有支持平台,发布了Chrome浏览器的120稳定版更新,该版本不再支持安卓7.0/7.1系统。在新功能上,Chrome浏览器120稳定版推出一项新的“主动安全检查”功能,该功能会定期运行,检查浏览器是否存在安全问题,并在检查完成之后通知用户。在设置中也为此新增了一个新的“安全检......
  • Codeforces Round 912 (Div. 2)
    Preface这场题莫名很对我胃口,因为F是个究极套路题,还是我最拿手的2-SAT,想+写不到半小时就搞定了然后E的核心思想和上周末VP的一场省赛的题一样,因此看一眼就会了唯一抽象的是D2要用对超集的sosdp,由于之前没写过就不知道还能这么搞A.HalloumiBoxes当\(k\ge2\)时,我们总可以通......
  • 2023.12.6日报
    今天主要学习了设计模式的七大原则以下内容都为自己学习完后的总结和盲敲,也是测试一下自己到底记住了多少首先是单一职责原则,指的是某一个类的功能应该专一,而不应该多而杂什么意思呢,例如我们写一个javaweb,应该分不同的功能类,各司其职,例如有连接数据库的DBUtil、处理数据的Dao,......
  • 「GIS数据」下载全国的GeoJSON、shp格式数据(精确到乡镇街道级)-2023年12月更新
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • 12.6
    实验二:百度图像增强与特效SDK实验一、实验要求任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)。任务四:完成图像特......
  • HC32L110+spi 调试SX1268
    1.官网下载例程https://www.xhsc.com.cn/Productlist/info.aspx?itemid=17512.找到spi例程开始暴改改动1.en_result_tSpi_SendData(uint8_tu8Data){    uint32_tu32TimeOut;        u32TimeOut=1000;    M0P_SPI->DATA=u8Data;        wh......
  • 2023.12.6——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.jfinal明日计划:学习......