Java常用集合分析

2023-11-16

ArrayList与Vector

动态数组(速度较慢)
创建时可以使用initialCapacity指定初始化大小,如果不指定则数组大小默认为10.
ArrayList与Vector的区别:
ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,如果有超过一个线程修改了ArrrayList集合,则程序必须手动保证该集合的同步性;
Vector集合时线程安全的,但性能比ArrayLIst的性能要低,(但是,不推荐使用Vector,这是一个很古老的集合,通常使用synchronizedList,将ArrayList变成线程安全的)

LinkedList

使用循环双向链表存储数据结果,与ArrayList截然不同,使用场景不同。

HashSet

其实就是基本的散列表,通过计算hashCode()来得出在数组中的存储位置。查找时间复杂度时O(1)。
HashSet不是同步的,如果多个线程同时访问一个HashSet,则必须通过代码来保证其同步。
集合元素值可以是null

LinkedHashSet

相比于HashSet,它同时使用链表维护元素的次序。

HashMap

具有如下特点:
HashMap使用的是散列表,默认大小为16,装载因子为0.75(即当散列表的大小达到16*0.75时,数组的大小会扩大为原来的两倍)
以下为他的散列函数:
int hash(Object key) {
int h = key.hashCode();
return (h ^ (h >>> 16)) & (capitity -1); //capicity 表示散列表的大小
}
散列冲突解决方法是链表法,当链表长度超过8时,会将链表改为红黑树,小于8时又改为单链表。

Hashtable

Hashtable与HashMap存在以下两点典型区别:
Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的实现,所以HashMa比Hashtable性能高一点;但如果有多个线程访问同一个Map对象,则使用Hashtable会更好一点(但不推荐,可以使用Collection的一个工具类synchronizedMap,将HashMap变成线程安全的)。
Hashtable不允许使用null作为key和value,否则会出现NullPotointerException异常;但HashMap可以使用null作为key或Value;
两者均不能保证元素的顺序。

LinkedHashMap

使用双向链表维护key-value对的次序。
迭代顺序与key-value对的插入顺序保持一致。

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

Java常用集合分析 的相关文章

随机推荐

  • c++_函数返回值,引用&作为函数返回值

    catalog 函数返回值 返回值是 const T 返回值的类型是 T 返回的对象是 局部对象 实现原理 返回的对象是 全局对象 实例 函数返回值 返回值是 const T ST operator ST a ST b return ST
  • 每日一题——求解连通分量个数

    题目描述 从键盘接收图的顶点集 关系集 创建无向图 第一行依次输入图的顶点个数n 关系个数k 以空格隔开 顶点个数 lt 20 第二行依次输入顶点值 类型为字符 接下去有k行 每行为两个字符 u 和 v 表示节点u 和 v 连通 格式为 u
  • 麦克输入

    如图所示 单端输入只有一个输入引脚ADCIN 使用公共地GND作为电路的返回端 ADC的采样值 ADCIN电压 GND的电压 0V 这种输入方式优点就是简单 缺点是如果vin受到干扰 由于GND电位始终是0V 所以最终ADC的采样值也会随着
  • Ros noetic 机器人坐标记录运动路径和发布 实战教程(B)

    前言 网上记录Path的写入文件看了一下还挺多的 有用yaml作为载体文件 也有用csv文件的路径信息 也有用txt来记录当前生成的路径信息 载体不重要 反正都是记录的方式 本文主要按yaml的方式写入 本文将撰写csv方式的文件写入格式
  • mysql查询每年每个月的数据_mysql 查询一年中每个月份的数据量

    这个是用mid 函数 截取字符串 mysql gt select count as 数量 mid time 1 7 as month from my add where time between 2015 01 01 00 00 00 an
  • 华为OD机试真题-字符串解密 【2023.Q1】

    题目内容 题目描述 有两个字符串string1和string2 string1是一个被加扰的字符串 小写英文字母 a z 和数字字符 0 9 组成 而加扰字符串由 0 9 a f 组成 string1里面可能包含0个或多个加扰子串 剩下可能
  • Dell服务器IDRAC管理界面配置NTP时间同步

    登录idrac管理界面 1 点击 iDRAC设置 2 在属性里面点击 设置 3 时区和NTP 4 在NTP1这项填写NTP的服务器地址5 右下角点击 应用 过几分钟就生效了
  • 回归指令_SWAP字节交换指令详解

    说明 本篇文章是为下一篇文章 在触摸屏上演示7段数码管指令而预先讲解的一个指令 正文 字节交换指令应该算一个比较重要的指令 特别PLC要和一些HMI设备通讯 在HMI上录入数据的时候 就有可能需要经常使用这个指令 来看一下西门子200PLC
  • 基于二叉树的算术表达式计算与实现

    非常有趣的一道题 代码参考 https blog csdn net over786 article details 17395567 把一个正常的表达式写成这个样子咯 问题的难点在于整数有多位 而且你要判断好哪个符号作为根 比如5 3 4
  • 华为OD机试 Python 限载货物数最小值

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • 检测洛达芯片的软件_洛达1562A与1536u与杰里有哪些区别?购买前10条须知

    相信大家应该对AirPodspro已经不陌生了 那么对于廉价版本的华强北AirPodspro有多少了解呢 芯片 洛达 中科蓝讯 杰里 恒炫 惴昱 等等 壳料 彩创壳 原厂彩创壳 资江壳 高美特壳料等等 喇叭也有好多种喇叭 至于大家为什么在各
  • (牛客网)华为机试(二)

    牛客网 华为机试题集解答 在解题前先分享一波oj刷题的固定格式代码 方便输入时使用 import java util import java io public class Main 一定要使用Main作为类名 public static
  • CODIS原理 之 数据迁移流程[2.X]

    CODIS原理 之 数据迁移流程 2 X 分类 源码剖析设计思路 1173 0 作者 邹祁峰 邮箱 Qifeng zou job hotmail com 博客 http blog csdn net qifengzou 日期 2016 08
  • 云安全架构的设计

    公有云安全概述 云安全职责划分 共同担责 软件即服务SAAS 云服务厂家几乎负责所有的安全性 因为租户只能访问 管理和使用其提供的应用程序 但无法对应用程序做破坏性操作 例如 SAAS服务厂家提供安全 日志 运维 审计 应用安全性检测等 二
  • 物联网开发124 - Micropython ESP32 C3连接AHT20温湿度传感器和BMP280压力传感器模块

    一 目的 这一节我们来学习如何使用合宙ESP32 C3 连接AHT20温湿传感器模块和BMP280压力传感器模块 使用ST7735屏幕进行显示 下面我们一起来学习一下吧 二 环境 ESP32 C3开发板 MicroPython v1 19
  • Android attr6,android – 未找到样式属性attr / colorSecondary

    我无法建立我的项目 它显示我attr colorSecondary未找到错误 看看我的风格和清单 请告诉我什么是错的 Android studio version 3 0 canary 9 compileSdkVersion 25 buil
  • 【C/C++】类型转换

    文章目录 1 C语言中的类型转换 1 1隐士类型转换 相近类型 意义相近 1 2 强制类型转换 2 C 的类型转换 2 1相近类型转换 static cast 2 2强制类型转换 reinterpret cast 2 3去掉对象const属
  • pytorch用于多标签分类的bceloss

    def bceloss output target positive prob F logsigmoid output negative prob F logsigmoid output loss positive prob target
  • sklearn机器学习——逻辑回归(一)

    1 概述 1 1 名为 回归 的分类器 x为特征向量 通过函数 线性回归使用输入的特征矩阵X来输出一组连续型的标签值y pred 以完成各种预测连续型变量的任务 比如预测产品销量 预测股价等等 那如果我们的标签是离散型变量 尤其是 如果是满
  • Java常用集合分析

    ArrayList与Vector 动态数组 速度较慢 创建时可以使用initialCapacity指定初始化大小 如果不指定则数组大小默认为10 ArrayList与Vector的区别 ArrayList是线程不安全的 当多个线程访问同一个