当前位置: 首页 > news >正文

JAVA PYTHONGOLANG在STR LIST MAP 等数据结构的一些底层设计

一、列表和扩容机制

 JAVA的列表主要分为list和vector,list是线程不安全的。list又主要分为ArrayList和LinkedList,ArrayList底层通过object数组实现,可以实现快速查找,LinkedList底层通过双向列表实现。java常用的列表实现类为ArrayList,ArrayList的主要源码如下:

public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable{}

再向ArrayList添加元素前,列表是一个空数组,占用的内存空间大小为0。

向列表添加第一个元素后,列表会判断内存容量大小是否满足要求,主要通过调用ensureCapacityInternal() 方法来获得最小扩容量,然后继续调用 ensureExplicitCapacity() 来判断是否需要扩容。由于开始容量不符合要求,会被执行扩容,也就执行grow()方法,扩容到默认的数组大小10。

然后想列表继续添加第1、2、3、4......11元素时,列表判断到cap小于实际需求量时,又会继续执行扩容。扩容的机制是new_cap = cap+0.5cap,比如11的列表会扩容到15,当添加第16个元素时又会扩容到22,33等等

扩容的机制:

 private void grow(int minCapacity) {
http://www.lryc.cn/news/10824.html

相关文章:

  • SpringMVC处理ajax请求
  • Spire.Office 8.2.2 for NET 开年之喜
  • python中的.nc文件处理 | 04 利用矢量边界提取NC数据
  • 使用 PyNeuraLogic 超越 Transformers
  • 微信点金计划(服务商角度)
  • 2023年美赛 MCM B题 重新构想马赛马拉岛
  • 指标体系的应用与搭建
  • 固态继电器的五大优势
  • 特征检测之HOG特征算法详解及Opencv接口使用
  • 一款好的低代码开发平台应该是什么样?
  • 基于Spring cloud搭建oauth2
  • 实现一个小程序分享图 wxml2canvas
  • 基于matlab设计x波段机载SAR系统
  • WPF学习:Slider — 冒泡显示值
  • Vue实战第4章:主页设计之中部内容设计
  • 数据结构代码总结(C语言实现)
  • zookeeper 复习 ---- chapter04
  • thinkphp6.0连接MYSQL
  • 商家必读!超店有数分享,tiktok达人营销变现如何更快一步?
  • 操作系统(day11)--快表,两级页表
  • 预告| 亮点抢先看!第四届OpenI/O启智开发者大会主论坛24日启幕!
  • 猪齿鱼(Choerodon UI )的通用提交的封装 —— 两种方案,A.使用dataSet的自身的submit,B.使用axios.post来提交
  • CISCN(Web Ezpentest)GC、序列化、case when
  • OSG三维渲染引擎编程学习之五十七:“第六章:OSG场景工作机制” 之 “6.1 OSG访问器”
  • Python3 输入和输出实例及演示
  • 召回-回忆录(持续更新)
  • 1243. 糖果/状态压缩dp【AcWing】
  • 【Spring Cloud Alibaba】001-单体架构与微服务架构
  • Renderer 使用材质分析:materials、sharedMaterials 及 MaterialPropertyBlock
  • java学习----网络编程