zoukankan      html  css  js  c++  java
  • ArrayList的动态扩展

    ArrayList相比较Array来说,具有的优势是可以动态扩展,即它所包含的成员个数是不确定的,可以随着不断地添加,或者移除进行扩展。但我们一定要知道的是,ArrayList是基于Array(数组)的,我们来看一下它的构造函数

    image

    其实这个Items是一个object的数组。这也从另外一方面说明了ArrayList是基于Object的,所以无法避免装箱和拆箱操作。这与泛型的List是不一样的

    image

    那么,到底ArrayList是如何动态扩展的呢?是不是需要增加一个元素的时候,就扩展一次呢?不是这样的。

    首先,ArrayList的初始化个数是4. 当请求的条目总数将要大于目前的个数,例如现在要插入第5个元素时,它并不是扩展一个空间,而是将现有的个数乘以2,然后将原来的元素复制过去. 如下面所示

    image

    image

    了解这个原理将有助于我们更好地理解ArrayList的机制,从经验上说,应该为ArrayList设置一个合适的Capacity,这样就不会出现为了一个元素的增长,而申请那么多的空间的问题

  • 相关阅读:
    严格模式
    es6模块与 commonJS规范的区别
    Javascript内置对象、原生对象、宿主对象关系
    实现继承的几种方式
    创建对象的一些方式
    null的小扩展
    getElementById的缩略
    你真的知道为什么不推荐使用@import?
    换行与不换行
    transition与animation
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1441096.html
Copyright © 2011-2022 走看看