文档章节

jdk1.6 1.7 list扩容的区别

 小艺术家被占用了
发布于 2016/08/16 13:35
字数 152
阅读 136
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

jdk1.6

public void ensureCapacity(int minCapacity) {  

    modCount++;  

    int oldCapacity = elementData.length;  

    if (minCapacity > oldCapacity) {  

        Object oldData[] = elementData;  

    int newCapacity = (oldCapacity * 3)/2 + 1;  

    if (newCapacity < minCapacity)  

        newCapacity = minCapacity;  

    // minCapacity is usually close to size, so this is a win:  

    elementData = Arrays.copyOf(elementData, newCapacity); 

jdk1.7

private void grow(int minCapacity) {
        // overflow-conscious code
        int oldCapacity = elementData.length;
        int newCapacity = oldCapacity + (oldCapacity >> 1);
        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);
    }

    private static int hugeCapacity(int minCapacity) {
        if (minCapacity < 0) // overflow
            throw new OutOfMemoryError();
        return (minCapacity > MAX_ARRAY_SIZE) ?
            Integer.MAX_VALUE :
            MAX_ARRAY_SIZE;

    }

区别:1、扩容后大小区别,1.6乘除运算后为1.5x+1,1.7位运算后为1.5x,效率提高

           2、1.7设置最大容量限制

© 著作权归作者所有

粉丝 3
博文 21
码字总数 4096
作品 0
黄浦
私信 提问
加载中
请先登录后再评论。
总结:Java 集合进阶精讲2-ArrayList

知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList 初探: ArrayList底层结构是数组,是List接口的 可变数组的实现,所以会占用一块连续的内存空间。 每个...

osc_yiec7bem
2018/06/29
3
0
详述List、Map、Set的区别?(

(1)List:有序,可重复。     ArrayList:底层实现的数据结构是数组,查询快,增删慢。线程不安全,效率高     LinkedList:底层实现的数据结构是链表,查询慢,增删块。线程不安全...

china_zyb
05/23
0
0
java集合--collection集合

1、画出collection的框架图   集合主要包含collection和map两个接口。其中collection中的元素是一个value值,map中的元素是key:value形式的。   collection包含set、list、queue。    ...

osc_fzp57c02
2019/06/17
4
0
常用集合类型的默认初始容量、加载因子、扩容增量

转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511840.html 这里要讨论这些常用的默认初始容量和扩容的原因是: 当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离...

osc_cenl5m72
2019/02/25
1
0
Java 集合基础知识 List/Set/Map

一、List Set 区别 List 有序,可重复; Set 无序,不重复; 二、List Set 实现类间区别及原理 Arraylist 底层实现使用Object[],数组查询效率高(Vector,原理类似,元素操作方法上添加了syn...

osc_nrqfdybm
2019/04/03
2
0

没有更多内容

加载失败,请刷新页面

加载更多

Mysql按月创建表分区

前言 下面仅记录一次对空表的一次分区过程,以日志表为例。 CREATE TABLE `sys_log` (  `log_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `user_id` int(10) DEFAULT NULL......

osc_7ac8o6u9
16分钟前
7
0
“不好意思,我要开始报复性省钱了”:成年人究竟如何体面地省钱?

最近,“报复性省钱”的行为火了。据数据显示,2020年第一季度人民币存款共增加8.07万亿元左右,也就是说,一季度的91天里,平均每天超过700亿存款涌向银行!本以为疫情结束会迎来一波“报...

osc_5asswvor
17分钟前
3
0
深度强化学习 - Policy Gradient 策略梯度类算法总结(一) - 知乎

Policy Gradient 类的算法是深度强化学习中很重要的一类算法,也是目前最有成效的算法之一。但我在学习的过程中一直觉得这部分的知识点比较散乱,因为策略梯度类的算法包括很多种变体,经过了...

osc_ct0tt1cu
17分钟前
7
0
强化学习基础 Ⅳ: State-of-the-art 强化学习经典算法汇总 - 知乎

封面是OpenAI在 spinning up 中给出的分类,然而这已不足以囊括现有的SOTA算法,再次感慨AI领域发paper的速度。(然而在智能方面好像也没有推进很多,不过不积跬步无以至千里嘛) 为了让大家...

osc_rki151ee
19分钟前
8
0
k8s-ephemeral和init容器

  截止到目前k8s1.18版本,k8s已经支持四种类型的container:标准容器,sidecar容器,init容器,ephemeral容器。 一:ephemeral容器 1.1.什么是ephemeral容器 临时容器与其他容器的不同之处...

osc_id3h8pjd
20分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部