`
pxuxian
  • 浏览: 5937 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ArrayList.add时增加数组长度

    博客分类:
  • Java
阅读更多
ArrayList内部是使用数组存放数据,在调用add时需要判断数组长度是否够,不够则新增数组长度,新的数数组长度和旧长度的关系为:
int newCapacity = (oldCapacity * 3) / 2 + 1;

public boolean add(E e) {
    ensureCapacity(size + 1); // Increments modCount!!
    elementData[size++] = e;
    return true;
}

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);
    }
}
分享到:
评论

相关推荐

    Java Methods-java.util.ArrayList.ppt

    * 追踪容量和大小:ArrayList 会追踪容量(已分配的数组长度)和大小(当前元素数量)。 四、ArrayList 类的使用场景 ArrayList 类可以用在很多场景下,例如: * 存储一组数据:ArrayList 可以用来存储一组数据,...

    Java数组相关的例子代码

    5. **数组长度** `length`属性用于获取数组的长度: ```java int arrayLength = numbers.length; ``` 6. **复制数组** 使用`System.arraycopy()`方法可以复制数组: ```java int[] copy = new int[numbers...

    Java ArrayList.add 的实现方法

    "Java ArrayList.add 的实现方法详解" ...Java ArrayList 的 add 方法的实现细节是非常复杂的,它涉及到数组的容量检查、元素的插入和复制等操作。了解这些细节将有助于我们更好地使用 Java ArrayList。

    C#数组与Arraylist

    在编程领域,尤其是在C#语言中,数组和ArrayList是两种常用的数据存储结构。它们各自有其特点和适用场景,理解并熟练运用它们是提升编程能力的关键。本文将深入探讨数组和ArrayList,帮助你掌握这两种数据结构的核心...

    跟我学Java-day14-ArrayList集合.pdf

    底层是数组实现的,长度可以变化 泛型的使用 用于约束集合中存储元素的数据类型 1.2ArrayList类常用方法【应用】 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 public class ArrayListDemo02 { public static...

    C# ArrayList用法大全

    C# 的 ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。下面是 ArrayList 的详细用法大全: 一、优点 1. 支持自动改变大小的功能:ArrayList 可以根据需要自动增加或减少数组的大小。 2...

    C#ArrayList的详细用法

    C# ArrayList 是一个特殊的数组,通过添加和删除元素,可以动态改变数组的长度。ArrayList 提供了多种方法来操作数组元素,包括添加、插入、删除、排序等。 一、优点 1. 支持自动改变大小的功能:ArrayList 可以...

    C#中数组与arraylist

    在创建数组时,我们需要指定其类型和长度,一旦定义,长度就不能改变。数组可以通过索引来访问元素,索引从0开始。例如,声明一个整型数组并初始化: ```csharp int[] numbers = new int[5] { 1, 2, 3, 4, 5 }; ```...

    list转换成string数组

    - **数组长度**:当使用`new String[list.size()]`创建数组时,确保列表中的元素数量与数组长度一致,避免出现数组越界的问题。 - **性能考虑**:在转换过程中,尽量减少不必要的对象创建,尤其是当列表很大时,这...

    数组和集合对象(三) ArrayList练习

    ArrayList允许我们存储任意类型的对象,并且可以在运行时改变数组的大小。与固定大小的数组不同,ArrayList提供了更多的灵活性,适合于需要频繁增删元素的情况。 ArrayList主要特性包括: 1. 动态扩展:ArrayList的...

    Java 实例 - 往数组中添加元素源代码-详细教程.zip

    但请注意,一旦数组长度确定,无法动态增加长度,因此不能添加超出数组长度的元素。 四、动态数组与ArrayList Java的ArrayList类(位于java.util包中)提供了一种动态增加数组大小的能力,使得在数组满时仍能添加...

    Java 集合与数组

    ArrayList 是一个动态数组,HashSet 是一个不允许重复元素的集合,TreeSet 是一个有序的集合。 数组 数组是一种基本的数据结构,用于存储一组相同类型的元素。数组的长度是固定的,一旦创建便不能改变。Java 中的...

    数组和list相互转换

    数组是一种固定长度的数据结构,适合存储已知大小的数据集合;而列表则是一种可变长度的数据结构,适合存储未知或可能变化大小的数据集合。在实际开发过程中,我们经常需要将数组转换为列表或将列表转换为数组,以便...

    C#_StringList的用法

    这是因为 ArrayList 需要在添加和删除元素时动态调整数组的大小。 三、添加元素: ArrayList 提供了多种添加元素的方法,包括: 1. public virtual int Add(object value):将对象添加到 ArrayList 的结尾处。 ...

    C#动态数组动态分配长度的方法[归类].pdf

    例如,当`m`增加时,可以创建一个新的数组`new int[m]`,并将旧数组的所有元素复制到新数组中。但这种方法有一个缺点,即原有的数组值会被丢失,因为这是一个全新的数组,不是在原有基础上的扩展。 ```csharp int...

    ArrayList集合与HashMap的扩容原来.docx

    在 add(e) 方法中又掉用了三个参数的方法 add(e, element, size),在这判断 elementDate 的长度是否等于 size 的大小,如果等于则触发扩容机制,将原数组的长度(加上原数组长度向右移动一位)扩容为 1.5 倍,在将原...

    试谈Java中ArrayList类的使用.pdf

    Java 中的 ArrayList 类是一种常用的数据结构,它可以实现可变长度的数组。ArrayList 类提供了多种方法来操作数组中的元素,包括添加、删除、获取、设置、查找等。 构造方法 ArrayList 类提供了两个构造方法,一个...

    c# 数组与集合(ArrayList)游戏开发高级使用举例

    然而,数组的缺点也很明显,即长度在声明时就必须固定,无法动态扩展。如果预估长度不足,会导致数据溢出;如果预估过大,则可能导致内存浪费。 相比之下,ArrayList是C#中System.Collections命名空间下的一个类,...

    VS2010轻松学习C#-从零到深入-天轰穿.NET4趣味编程视频教程_第22讲:深入数组

    // 3个子数组,每个子数组长度可不同 jaggedArray[0] = new int[2]; jaggedArray[1] = new int[4]; jaggedArray[2] = new int[1]; ``` 6. **数组方法**:C#中的`System.Array`类提供了许多操作数组的方法,如`...

    java中的数组和集合共2页.pdf.zip

    数据类型[] 数组名 = new 数据类型[长度]; ``` 3. 初始化:数组可以同时创建并初始化,或者在创建后单独初始化。 - 静态初始化:`int[] arr = {1, 2, 3};` - 动态初始化:`int[] arr = new int[3]; arr[0] = 1; ...

Global site tag (gtag.js) - Google Analytics