文档章节

jdk1.6 1.7 list扩容的区别

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

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设置最大容量限制

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 21
码字总数 4096
作品 0
黄浦
关于java.util.?类,已过期的方法。

比如最常用的 Date 类,它里面的一些方法如getDate,setMinutes 等等都已过期,在JDK1.6-1.7中 继续去使用它好像也没问题。 那么我的问题来了。在使用过程中已过期的和未过期的到底有什么区别...

阿泳
2017/02/06
570
9
数据结构与算法-线性表ArrayList源码分析

前言 ArrayList继承了AbstractList,实现了List。ArrayList在工作中经常用到,所以要弄懂这个类是极其重要的。 构造图如下: 蓝色线条:继承 绿色线条:接口实现 image.png 正文 ArrayList简介...

小朱v
2017/12/29
0
0
jdk1.6的集合源码阅读之ArrayList

简述 ArrayList其实就是动态数组,是Array的复杂版本,动态扩容和缩容,灵活的设置数组的大小,等等。 其定义如下 而AbstractCollection实现了Collection的部分方法和AbstractList继承了该A...

双月通天
2016/08/23
18
0
一文让你彻底理解 Java HashMap 和 ConcurrentHashMap

前言 Map 这样的 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后...

07/25
0
0
HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

前言 Map 这样的 在软件开发中是非常经典的结构,常用于在内存中存放数据。 本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后...

crossoverJie
07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python标准输入输出

input() 读取键盘输入 input() 函数从标准输入读入一行文本,默认的标准输入是键盘。 input 可以接收一个Python表达式作为输入,并将运算结果返回。 print()和format()输出 format()输出...

colinux
17分钟前
0
0
Python 核心编程 (全)

浅拷贝和深拷贝 1.浅拷贝:是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容。相当于把变量里面指向的一个地址给了另一个变量就是浅拷贝,而没有创建一个新的对象,如a...

代码打碟手
29分钟前
0
0
PHP 对象比数组省内存?错!数组比对象省内存?错!

刚刚一个群里有人引出了 PHP 数组和对象占用内存谁多谁少的问题。我想起之前我好像也测试过这个问题,和群里人说的对象比数组节省内存的结论相反,我得出的是数组比对象节省内存。 但今天,我...

宇润
45分钟前
1
0
memcached命令行及其用法

21.5 memcached命令行 创建数据 yum install -y telnet 利用telnet命令连接memcached数据库 telnet 127.0.0.1 11211 #写入数据 set key2 0 30 212STORED 这个是错误的示范,因为0 30 已经...

lyy549745
45分钟前
0
0
Maven私服

Maven私服 一、简介 当多人项目开发的时候,尤其聚合项目开发,项目和项目之间需要有依赖关系,通过maven私服,可以保存互相依赖的jar包,这样的话就可把多个项目整合到一起。 如下图: Inst...

星汉
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部