文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
58
0
awk命令扩展使用操作

awk 中使用外部shell变量 示例1 [root@centos01 t1022]# A=888[root@centos01 t1022]# echo "" | awk -v GET_A=$A '{print GET_A}'888[root@centos01 t1022]# echo "aaaaaaaaaaaaa" | aw......

野雪球
今天
52
0
深入解析MySQL视图VIEW

Q:什么是视图?视图是干什么用的? A:视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中的。   通过视图,可以展现基表的部分数据;...

IT--小哥
今天
55
0
虚拟机学习之二:垃圾收集器和内存分配策略

1.对象是否可回收 1.1引用计数算法 引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能...

贾峰uk
今天
59
0
smart-doc功能使用介绍

smart-doc从8月份底开始开源发布到目前为止已经迭代了几个版本。在这里非常感谢那些敢于用smart-doc去做尝试并积极提出建议的社区用户。因此决定在本博客中重要说明下smart-doc的功能,包括使...

上官胡闹
昨天
55
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部