Map复习(JDK1.8)

news2024/11/26 4:41:03

首先考虑的问题任然是高并发的安全问题:

HashMap是一个不安全的,多线程会导致数据不一致。

Hashtable是安全的,但是速度比较慢,只要是安全的就是一性能为代价换来的,加锁开锁需要时间,加锁是只能一个线程访问.

ConcurrentHashMap类也是安全的,增加时使用了synchronized保证的安全。

而读取使用了volatileb确保它的可见性,保证的安全,volatile速度比synchronized是快一些的,读取用它住够了。

Map排序问题:

TreeMap可以保证key去重,也可以排序,自己写比较器进行key排序(对象排序)

当然要想进行去重,就得自定义去重(对象去重)。

LinkedHashMap也是将key放在链表上,所以它存入的顺序和取出的顺序是一样的。

HashMap是键值对结构,通过key查找value,key的值会进行hashCode得到一个hash值,,再根据hashMap的数组大小取余。这样就保证了key可以在初始数组中。

当然在数据变多的时候,数组也会发生该表:

hashMap数组的默认大小是16格,当数据数量达到75%时(arr.leng()*0.75)就会触发扩容,将数组翻倍,变成32个,任然75%时继续扩容。

所以麻烦就来了,在有限的范围里放75%的东西,极有可能放在同一个位置,产生了哈希冲突。所以HashMap就是用了拉链存储发,如图(样例,这几个字母真实的存储并不是这样):

 而链表的遍历又有一个致命的缺点,那就是慢o(n)的时间复杂度。所以在一定情况下,会转换为红黑树(特殊的二叉树搜索树,最小、最大高度绝对值<=1)。

在链表长度大于8且数组大小大于等于64时,将会吧链表转换为红黑树。

而在红黑树中只要高度小于6时,将会转回链表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务注册与发现总结

文章目录 概要一、服务注册与发现技术要点1.1、服务注册/下线1.1.1、代理注册1.1.2、客户端注册 1.2、健康检查&#xff08;续约&#xff09;1.2.1、主动检测1.2.2、被动检测 1.3、服务发现1.3.1、代理发现1.3.2、客户端发现 1.4、服务变更通知1.4.1、主动通知1.4.2、被动通知 …

linux系统vim编辑器的使用

前言&#xff1a; 前面我们就说过在linux系统下一切都是文件&#xff0c;也可以说在日常使用linux系统过程中使用频率最高工具&#xff0c;基本没有之一&#xff0c;今天就来详情介绍一下我们在日常使用vim编辑器的过程中一些常见的指令&#xff0c;博主始终遵循好记心不如烂笔…

Excel排序

Excel排序 写在前面&#xff1a; Excel是我们最常用的办公工具之一&#xff0c;其中排序是最基础和最重要的一项&#xff0c;如下介绍了两种排序方式&#xff0c;有需要者可以参照这些步骤完成相关任务~ 一、排序方法1 使用Excel自带的排序功能&#xff0c;具体步骤如下&…

pandas菜鸟速学-series

一、pandas是什么 一个基于numpy的数据处理数据分析的工具。 特点&#xff1a; Pandas 的主要数据结构是 Series &#xff08;一维数据&#xff09;与 DataFrame&#xff08;二维数据&#xff09;&#xff0c;这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大…

重学SSE

概述 SSE&#xff08;Server-Sent Events&#xff09;是一种用于实现服务器主动向客户端推送数据的技术&#xff0c;也被称为“事件流”&#xff08;Event Stream&#xff09;。它基于 HTTP 协议&#xff0c;利用了其长连接特性&#xff0c;在客户端与服务器之间建立一条持久化…

暴力递归到动态规划(一)

⭐️前言⭐️ 动态规划是一个很难的模块&#xff0c;如果一道动态规划的题目直接去推出动态转移方程来解题&#xff0c;是很难的&#xff0c;所以应该先想出暴力解决的方法&#xff0c;再去用空间换时间优化&#xff0c;得出动态规划的解法。 &#x1f349;欢迎点赞 &#x1f…

【Java设计模式】—— 享元模式概述和示例

目录 概述享元模式的定义与特点享元模式的结构与实现1. 模式的结构2. 模式的理论实现 享元模式的应用实例代码实现 享元模式的应用场景享元模式的在实际工作中的应用参考文献 概述 在面向对象程序设计过程中&#xff0c;有时会面临要创建大量相同或相似对象实例的问题。创建那…

Linux命令学习之mkdir、rmdir和rm

这篇文章想要学习一下目录的创建&#xff08;mkdir&#xff09;、空目录的删除&#xff08;rmdir&#xff09;、非空目录的删除&#xff08;rm&#xff09;。 mkdir mkdir是新建目录的命令。man mkdir看一下mkdir的使用说明。 按q键退出帮助说明。 mkdir /learnwell在根目录…

贷款业务-贷款模式

参考文章 多流量模式下的系统设计- 呱说产品自营 互联网金融之信贷三部曲&#xff1a;贷中 导读 互联网的玩法&#xff0c;基本都是流量为王。网上也有种说法&#xff0c;互联网平台&#xff0c;最终都会走上金融业务&#xff0c;一般都是指贷款业务。 但是&#xff0c;做…

PLC信号发生器(博途SCL)

信号发生器的应用请参看下面的博客文章,在演示分析滤波器的作用时,我们需要对信号进行叠加处理。 博途PLC滤波指令 Filter_PT1、Filter_PT2、Filter_DT1详细使用说明(含Simulink+博途PLC仿真)_RXXW_Dor的博客-CSDN博客博途S7-1200/1500PLC的PID控制和详细使用说明,请参看…

计算机组成原理---第四章 指令系统习题详解版

&#xff08;一&#xff09;课内例题 4.1 4.2 具体分析&#xff0c;4.2 中&#xff0c; 因为只有一行&#xff1a;单字长 二地址&#xff1a;源寄存器、目标寄存器 操作码看OP&#xff08;15-91&#xff09; 然后按操作数的物理位置来区别RR型&#xff0c;RS型&#xf…

代码随想录训练营Day58| 739. 每日温度 496.下一个更大元素 I

目录 学习目标 学习内容 739. 每日温度 496.下一个更大元素 I 学习目标 739. 每日温度 496.下一个更大元素 I 学习内容 739. 每日温度 739. 每日温度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/daily-temperatures/ class Solution:def da…

Excel VBA编程

前两天我朋友找我帮忙&#xff0c;让给excel做个按钮功能&#xff0c;方便他们表格统计&#xff0c;我晚上研究了一下给他做出来了&#xff0c;这里记录一下入门操作和大概思路&#xff0c;具体怎么写VBA的代码我就不记录了&#xff0c;那玩意儿看教程去吧&#xff0c;也不是这…

【网络】socket套接字

1.理解IP 每台主机都有自己的IP地址&#xff0c;所以当数据从一台主机传输到另一台主机就需要IP地址。报头中就会包含源IP和目的IP。源IP地址&#xff1a;发送数据报那个主机的IP地址&#xff0c;目的IP地址&#xff1a;想发送到的那个主机的IP地址我们把数据从一台主机传递到…

C语言-const关键字

1.const 关键字 const 是 constant 的缩写&#xff0c;const 在实际编程中用得比较多&#xff0c;意思是“恒定不变的”&#xff0c;它是定义只读变量的关键字&#xff0c;或者说 const 是定义常变量的关键字。 (可读&#xff0c;不可写) const 可以修饰变量&#xff0c;数组&a…

光明区马田大围城市更新旧改项目--华润集团

【华润光明马田大围旧改一期项目基础信息】 项目开发商&#xff1a;华润集团 占 地 面 积&#xff1a;约110151㎡ 建 筑 面 积&#xff1a;待专规图 物 业 类 型&#xff1a;华润一期范围内的待拆迁物业 项 目 进 度&#xff1a;直接确权阶段&#xff0c;即将立项 【项目现…

c++ new 源码学习一下

之前有一篇文章介绍了 new 的一些用法 c new 在指定内存上创建对象&#xff0c;今天结合源码来学习一下 new 更详细的用法。相关的源码&#xff1a;gcc git 1&#xff0c;void* operator new (std::size_t size); 我们可以在头文件<new>里看到它的原型&#xff1a; _G…

J2EE 技术的企业人事管理系统的设计与实现(论文+源码)_kaic

目 录 一、引 言 二、相关技术概述 (一) 基于 MVC 设计模式的 J2EE 技术 (二) MySql 数据库管理系统 (三) 基于 B/S 结构的系统安全 三、企业人事管理系统总体设计 (一) 系统需求分析 1.功能结构分解 2.员工档案管理模块 3.员工工资管理模块 (二) 系统总体结构设计 四、企业人…

2023-06-03 陕西省技能大赛 crypto 复现

文章目录 奇怪的sar题目描述&#xff1a;题目分析&#xff1a; Ham3题目描述&#xff1a;题目分析&#xff1a; BigDataEnc题目描述&#xff1a;题目分析&#xff1a; 奇怪的sar 题目描述&#xff1a; from Crypto.Util.number import *key flag{**********}bits 1024 msg …

ESP32+U8G2库显示中文

这里写自定义目录标题 在使用esp32u8g2oled进行中文先显示例程 废话不说&#xff0c;直接上代码 #include <Arduino.h> #include <U8g2lib.h> //软件SPI U8G2_SSD1306_128X64_NONAME_F_4W_SW_SPI u8g2(U8G2_R0, /* clock/ 14, / data/ 13, / cs/ 15, / dc/ 7, / r…