博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初始化(Map,List)容器类的容量会有一定的性能提升
阅读量:4213 次
发布时间:2019-05-26

本文共 936 字,大约阅读时间需要 3 分钟。

 容器类底层的数据结构大多使用数组,我们知道数组是不能动态修改它的size,假如非要修改的话,只要初始化另外一个更大容量的数据,并将原来的数据复制过去。对容器类的插入操作,首先就得check是否容量满足,如不满足先扩展

public boolean add(E e) {        ensureCapacityInternal(size + 1);  // Increments modCount!!        elementData[size++] = e;        return true;    }
 private void ensureCapacityInternal(int minCapacity) {
modCount++;        // overflow-conscious code        if (minCapacity - elementData.length > 0)            grow(minCapacity);    }

 private void grow(int minCapacity) {

// overflow-conscious code        int oldCapacity = elementData.length;        int newCapacity = oldCapacity + (oldCapacity >> 1);//扩展为原来容量的1.5倍        if (newCapacity - minCapacity < 0)            newCapacity = minCapacity;        if (newCapacity - MAX_ARRAY_SIZE > 0)            newCapacity = hugeCapacity(minCapacity);        // minCapacity is usually close to size, so this is a win:        elementData = Arrays.copyOf(elementData, newCapacity);//复制操作

转载地址:http://pmdmi.baihongyu.com/

你可能感兴趣的文章
Linux 虚拟环境找不到路径
查看>>
蓝桥杯 2012 C++B 决赛 方块填数
查看>>
C 字符串读入与取出空白符
查看>>
2013 蓝桥杯 C++ B决赛 高僧斗法(尼姆博弈)
查看>>
KMP实现
查看>>
蓝桥杯 2014 决赛 C++B组(4) 生物芯片(完全平方数)
查看>>
线段树 hdoj 1166 敌兵布阵
查看>>
线段树 hdoj 1754
查看>>
线段树习题
查看>>
POJ 1002 487-3279 模拟
查看>>
CodeForces 2018-6-1 div3 D. Points and Powers of Two
查看>>
C/C++ 位运算
查看>>
HDOJ 2045 LELE的RPG难题 递推
查看>>
HOOJ 2047 阿牛的EOF牛肉串 (递推)
查看>>
windows 下远程访问 远程主机ubuntuMysql数据库 遇到的问题
查看>>
STL使用
查看>>
python 用matplotlib 画图
查看>>
常用分类算法在不同样本下的选择
查看>>
python 使用 libsvm
查看>>
android 获取百度地图SDK遇见的问题(只显示网格,也就是调用失败)
查看>>