Map分类与常见情况

2023-11-09

java为数据结构中的映射定义了一个接口java.util.Map;

它有四个实现类,分别是HashMap 、HashtableLinkedHashMapTreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。

  • Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
  • Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
  • LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
  • TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Map分类与常见情况 的相关文章

随机推荐

  • 从零开始的iOS开发: 20

    目录 一 开发环境 二 基础知识 1 往期知识点 2 简易自动布局 Stack View 三 实验步骤 1 先在Xcode建立一个APP项目 2 界面搭建 3 连接控件与代码 4 补充代码 完善功能 一 开发环境 开发工具 Xcode 12
  • 【Vue】Element-Plus 源码学习笔记——实现一个基本的 ElMessage 组件

    先贴下 Element Plus ElMessage 源码的网址 我们需要实现的效果类似 ElMessage 即能够显示多个消息 上一个消息消失下面的消息会自动往上移动 进入移出动画 自定义消息和持续时间 其他选项这里不考虑 大体思路 我们
  • C++ 风格指南

    0 扉页 0 1 译者前言 Google 经常会发布一些开源项目 意味着会接受来自其他代码贡献者的代码 但是如果代码贡献者的编程风格与 Google 的不一致 会给代码阅读者和其他代码提交者造成不小的困扰 Google 因此发布了这份自己的
  • Windows+Git+TortoiseGit+COPSSH安装图文教程

    跟师弟一起搭了个git本地服务器 他整理了一下相关内容 我转过来 准备工作 1 Git 1 8 1 2 preview20130201 exe 下载地址 https code google com p msysgit downloads l
  • 【RocksDB】Ubuntu20.04下编译rocksdb

    前言 我在刚学rocksdb的时候是在2022年 但是网上的资源很少 查了好久才把rocksdb安装成功 在这里向大家分享一下我的经历 安装过程中也报了很多错误 希望大家不要迷路 首先 在虚拟机里面安装依赖的包以及组件 总共七个依赖包和组件
  • Java 抽象类和普通类、接口的区别——看完你就顿悟了

    Java 抽象类和普通类 接口的区别 看完你就顿悟了 标签 java抽象类概念理解抽象类与接口区别抽象类与普通类区别 2017 05 04 16 26 1029人阅读 评论 0 收藏 举报 分类 Java 17 版权声明 本文为博主csdn
  • 3D语音天气球(源代码分享)——通过天气服务动态创建3D球

    转载请注明本文出自大苞米的博客 http blog csdn net a396901990 谢谢支持 开篇废话 这个项目准备分四部分介绍 一 创建可旋转的 3D球 3D语音天气球 源代码分享 创建可旋转的3D球 二 通过天气服务 从网络获取
  • The MRC database dictionary之FAM库 ( familiarity 熟悉程度)

    breakfast 657 afternoon 655 clothes 652 bedroom 646 dad 646 girl 645 radio 644 book 643 newspaper 641 water 641 big 640
  • Linux系统下卸载VMware Workstation软件

    之所以写这篇文的原因是自己linux台式电脑上需要卸载VMware Workstation软件 网上检索了很多关键词 搜索到的大都是卸载vm虚拟机内安装的Linux操作系统 可能就是这方面的说明内容太少了 在此记录一下 说不定以后就能用上了
  • Flutter使组件居于屏幕中间

    有多种方式可以使组件居于屏幕中间 以下是其中的几种 1 使用 Center 组件将子组件居中 dart Center child YourWidget 2 使用 Align 组件指定子组件的对齐方式 将其居中 dart Align alig
  • CSS的BEM命名规范

    BEM的意思就是块 block 元素 element 修饰符 modifier 是由Yandex团队提出的一种CSS命名方法 其背后的想法是将用户界面分为独立的块 即使使用复杂的UI 这也使界面开发变得容易和快速 并且允许重用现有代码而无需
  • python库是什么

    1 概念 库的概念是具有相关功能模块的集合 这也是Python的一大特色之一 2 库的分类 在Python语言的库中 分为Python标准库和Python的第三方库 python的标准库是随着pyhon安装的时候默认自带的库 python的
  • OkHttp的特性优点及爬虫示例

    OkHttp是一个Java和Android应用程序的HTTP客户端库 旨在提高资源加载速度和节省带宽 与其他类似的库相比 它具有以下优点和区别 一 OkHttp的特性和优点 支持HTTP 2协议 可提高效率和速度 支持连接池 减少请求延迟
  • 【剑指offer】面试题39:二叉树的深度

    一 题目描述 输入一棵二叉树 求该树的深度 从根结点到叶结点依次经过的结点 含根 叶结点 形成树的一条路径 最长路径的长度为树的深度 二 解题思路 递归思想 1 如果一棵树只有一个节点 那么深度为1 2 如果根节点只有左子树而没有右子树 那
  • 【python】【leetcode】【算法题目389—Find the Difference】

    一 题目描述 题目原文 Given two strings s and t which consist of only lowercase letters String t is generated by random shuffling
  • 从一道题目学习Nunjucks模板

    Nunjucks简介 Nunjucks 是一个功能丰富 强大的 JavaScript 专用模板引擎 Nunjucks 提供丰富的语言特性和块继承 自动转移 宏和异步控制等等 重点要关注的是 Nunjucks 模板引擎的代码在沙箱环境中运行
  • Matplotlib课程–学习Python数据可视化

    Learn the basics of Matplotlib in this crash course tutorial Matplotlib is an amazing data visualization library for Pyt
  • 详解Java锁对象

    1 Synchronized 1 1 synchronized特性 1 互斥 synchronized会起到互斥效果 某个线程执行到某个对象的synchronized中时 其他线程如果也执行到同一个对象synchronized就会阻塞等待
  • Python项目:学生信息管理系统(完整版)

    本文是基于上一篇 python项目 学生信息管理系统 初版 进行了完善 并添加了新的功能 主要包括有 完善部分 输入错误 无数据查询等异常错误 新的功能 文件的操作 文件的读写 其中重点是对文本字符串的详细解析 关于整个解析拆解和重组详见代
  • Map分类与常见情况

    java为数据结构中的映射定义了一个接口java util Map 它有四个实现类 分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对 根据键得到值 因此不允许键重复 重复了覆盖