文档章节

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
671
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项目发布到sae上遇到的问题汇总

写在最前面:sae新浪云相比交bae还是有诸多限制的。比如jdk版本,对java许多框架支持不够,但并不影响其使用。现就本人上传到sae的项目遇到的问题进行汇总分析。 问题1: 查看日志后主要报错...

传奇再现
2014/05/07
0
0
HashMap? ConcurrentHashMap? 相信看完这篇没人能难住你!

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

crossoverJie
07/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

stylus

stylus基础教程,stylus实例教程,stylus语法总结

miaojiangmin
32分钟前
3
0
PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
5
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部