码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ArrayList、HashMap、HashSet扩容机制


    ArrayList :

    线性表存储
    默认开辟大小为10的空间
    当默认开辟空间不够的时候(比如此时需要add第11个元素),则以原数组的长度长度的1.5倍左右:

    int newCapacity = oldCapacity + (oldCapacity >> 1),所以 ArrayList
    每次扩容之后容量都会变为原来的 1.5 倍左右(oldCapacity 为偶数就是 1.5 倍,否则是 1.5 倍左右)! 奇偶不同,比如
    :10+10/2 = 15, 33+33/2=49。如果是奇数的话会丢掉小数.

    重新确定数组容量,然后将第11个元素添加进去,申请空间并赋值线程不同步(非线程安全):如果多个线程同时访问一个ArrayList实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步,所以为了保证同步,最好的办法是在创建的时候完成加锁,保证线程同步。

    HashMap:
    存储结构hash表类似于桶:线性表+链表+红黑树
    默认初始化容量16,装载因子默认为0.75

    HashSet
    HashSet底层实现是hashMap
    key 值比较 需要重写equals方法,重写hashcode方法
    value static final PRESENT
    扩容机制和hashMap一样 16,0.75
    add的时候调用的是hashMap的put(key,PRESENT);方法。

  • 相关阅读:
    信奥中的数学:加法原理和乘法原理
    LCP创建bond接口
    【SpringBoot笔记08】SpringBoot框架集成JDBC以及JdbcTemplate的使用
    OpenStack集群部署——计算节点neutron节点部署(三)
    Kubernetes 深入理解kubernetes(一)
    流程图用什么软件做比较好?这几个实用软件了解下
    群晖Cloud Sync数据同步到百度云、另一台群晖、nextcloud教程
    高级深入--day22
    Android akptool 安装 mac 电脑
    复现xss绕过一个循环和两个循环
  • 原文地址:https://blog.csdn.net/qq_42479987/article/details/126391269
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号