文档章节

jdk1.6 1.7 list扩容的区别

 小艺术家被占用了
发布于 2016/08/16 13:35
字数 152
阅读 20
收藏 0
点赞 0
评论 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
博文 17
码字总数 4096
作品 0
黄浦
关于java.util.?类,已过期的方法。

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

阿泳 ⋅ 2017/02/06 ⋅ 9

jdk1.6与1.7垃圾回收

最近项目中遇到了个关于JVM中GC线程数的问题,做一下简单的总结 问题场景: server:均为 sun公司的solaris 系统 CPU 128个 项目8.1时使用的 java版本: jdk1.6u38 升级到9.1后使用jdk1.7U21 下面...

天天顺利 ⋅ 2015/04/28 ⋅ 2

数据结构与算法-线性表ArrayList源码分析

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

小朱v ⋅ 2017/12/29 ⋅ 0

JDK源码阅读ArrayList

ArrayList的具体实现 ArrayList是List接口的具体实现,是在实际生产环境中用的非常多的一种工具类 数据结构 顾名思义,从ArrayList的名字中我们就可以看出,ArrayList是基于数组的一种实现. 主要...

le284 ⋅ 2015/02/13 ⋅ 0

jdk1.6的集合源码阅读之ArrayList

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

双月通天 ⋅ 2016/08/23 ⋅ 0

java项目发布到sae上遇到的问题汇总

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

传奇再现 ⋅ 2014/05/07 ⋅ 0

lucene从哪个版本开始基于JDK1.7进行开发

最近在学习lucene,下载的最新版4.10.3准备学习,下载源码下来看发现他是基于JDK 1.7版本的,但是翻看lucene的历史版本似乎没找到从哪个版本开始使用JDK1.7的。 只是觉得目前大部分公司应该还...

haffun ⋅ 2015/01/24 ⋅ 1

Linux 安装双版本jdk(2)rpm -ivh or -Uvh?

比如我现在有个1.7版本的,想在安装1.6版本怎么办? 0. 可以先试试有1.7的时候,1.6能不能装上。因为我用Ubuntu系统,安装jdk,jdk-6u45-linux-x64.bin,jdk-7u71-linux-x64.tar.gz可以安装。...

Mr_sheng ⋅ 2017/12/02 ⋅ 0

HashMap 相关面试题及其解答

Q:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。 transient Node[] table; Q:HashMap 的工作原理? ...

TinyDolphin ⋅ 2017/11/21 ⋅ 0

maven几种常见错误的解决方法

一、must override a superclass method 错误 首先我们得知道: @override注释在jdk1.5环境下只能用于对继承的类的方法的重写,而不能用于对实现的接口中的方法的实现,在jdk1.6环境下对于继...

cjun1990 ⋅ 2015/01/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 17分钟前 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 20分钟前 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 21分钟前 ⋅ 0

IT行业的变革就像世界杯德国对战墨西哥一样难以预测[图]

最近在观看世界杯,尤其是昨天的比赛,上一届卫冕冠军德国队居然0:1告负墨西哥,这创造了历史,首先是墨西哥从来没赢过德国队,其次是德国队36年来首站没输过,再差也是打平,而这次,德国队...

原创小博客 ⋅ 40分钟前 ⋅ 0

解决CentOS6、7,/etc/sysconfig/下没有iptables的问题

一、Centos 6版本解决办法: 1.任意运行一条iptables防火墙规则配置命令: iptables -P OUTPUT ACCEPT 2.对iptables服务进行保存: service iptables save 3.重启iptables服务: service ...

寰宇01 ⋅ 50分钟前 ⋅ 2

数据库备份和恢复

备份:mysqldump -u root -p 数据库>磁盘路径 恢复:mysql -u root -p 数据库<sql脚本的磁盘路径

anlve ⋅ 今天 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 今天 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部