`
zyz611
  • 浏览: 95291 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ArrayList添加元素

    博客分类:
  • java
阅读更多
如果没有指定长度,则只是初始化一个空数组。
public ArrayList() {
        this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
    }


如果指定了长度,则必需大于1
 public ArrayList(int initialCapacity) {
        if (initialCapacity > 0) {
            this.elementData = new Object[initialCapacity];
        } else if (initialCapacity == 0) {
            this.elementData = EMPTY_ELEMENTDATA;
        } else {
            throw new IllegalArgumentException("Illegal Capacity: "+
                                               initialCapacity);
        }
    }


初始化时如果指定了集合,可以看到是空集合的情况下,其实也是初始化了一个空的
ArrayList。c.toArray()如果Collection是通过Arrays,toArray返回的,将是Arrays里面指定的泛型 ,而不是Object,将会返回原始的类型。
也就是通过集合初始化后的ArrayList里面的数组数据类型均为Object[]。
在我们遍历的时候,会将Object转化成我们需要的对象类型。
public ArrayList(Collection<? extends E> c) {
        elementData = c.toArray();
        if ((size = elementData.length) != 0) {
            // c.toArray might (incorrectly) not return Object[] (see 6260652)
            if (elementData.getClass() != Object[].class)
                elementData = Arrays.copyOf(elementData, size, Object[].class);
        } else {
            // replace with empty array.
            this.elementData = EMPTY_ELEMENTDATA;
        }
    }


添加元素时,如果长度会自动扩充,扩充为现有长度的1.5倍。
  if (minCapacity - elementData.length > 0)
            grow(minCapacity);

  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);
    }

分享到:
评论

相关推荐

    ArrayList常用的方法

    // 添加元素 arrlist.Add("第一个元素"); arrlist.Add("第二个元素"); arrlist.Add("第三个元素"); // 添加整型数据 foreach (int n in new int[3] { 0, 1, 2 }) { arrlist.Add(n); } // 移除 "第二个...

    ArrayList源码分析

    - `add()`方法用于向ArrayList添加元素,它通过`ensureCapacityInternal()`确保数组有足够的空间。如果数组已满,`grow()`方法会进行扩容,通常扩容为原来的1.5倍。 - `remove()`方法删除指定位置的元素,需要将...

    arraylist和linkedlist的时间复杂度

    arraylist 和linked list的时间复杂度

    C#ArrayList用法

    ##### 向 ArrayList 添加元素 ```csharp for (int i = 0; i ; i++) { list.Add(i); // 添加整数到列表 } ``` ##### 移除 ArrayList 中的元素 ```csharp list.RemoveAt(5); // 移除索引为 5 的元素 ``` ##### 在 ...

    Java中ArrayList类的用法.pdf

    你可以通过`Add`方法向ArrayList添加元素,如下: ```java for (int i = 0; i ; i++) list.add(i); ``` 若需移除元素,可以使用`RemoveAt`方法: ```java list.RemoveAt(5); ``` 同时,你可以通过`Add`方法连续添加...

    Java的Array和ArrayList教程by程谱CodeRecipe,适合学过Java入门教程的初学者使用

    2. 添加元素:使用`add()`方法向ArrayList添加元素。 3. 删除元素:`remove()`方法用于删除指定索引处的元素,`remove(Object)`用于删除特定的对象。 4. 访问元素:通过索引访问,如`list.get(index)`。 5. 遍历...

    ArrayList源码解析(数据结构及底层实现)(csdn)————程序.pdf

    当你向 ArrayList 添加元素时,如果数组已满,ArrayList 会自动扩容,通常是将当前容量翻倍,以提供更多的存储空间。 ### 1. 序列化与 `transient` 关键字 `transient` 关键字用于标记一个字段,表示该字段不参与...

    使用数组列表ArrayList填充ListBox

    // 添加元素 myList.Add("项2"); // ... ListBox lb = new ListBox(); // 创建ListBox实例 foreach (object item in myList) // 遍历ArrayList { lb.Items.Add(item.ToString()); // 将ArrayList的元素添加...

    ArrayList数据批量添加数据

    2. **AddRange()**: 将集合中的元素添加到`ArrayList`的末尾。 3. **Insert()**: 在`ArrayList`的指定位置插入一个新对象。 4. **InsertRange()**: 在`ArrayList`的指定位置插入一系列对象。 #### 三、示例代码分析...

    轻松学习C#的ArrayList类

     ArrayList提供了两种方法用于向ArrayList添加元素,即Add和AddRange。  (1),Add方法将单个元素添加到列表的尾部,其格式为:ArrayList 对象.Add(要添加的值)  (2),AddRange方法获取一个实现IColl

    浅谈Java中几个常用集合添加元素的效率

    在不考虑去重和排序的情况下,ArrayList、LinkedList 和 HashMap 的添加元素效率最高,HashSet 的添加元素效率相对较低,而 TreeSet 的添加元素效率是最低的。在实际开发中,需要根据具体情况选择合适的集合类型,以...

    javalist数据结构-Java数据结构-------List.pdf

    在向ArrayList添加元素时,如果现有容量不足,会进行扩容。扩容策略是将原数组大小的1.5倍作为新的容量,以减小扩容的频率。这种设计在大多数情况下可以有效提高性能,但插入操作的时间复杂度在需要扩容时会升至O(n)...

    有关于C#的程序(ArrayList类,动态添加,删除的)

    创建一个ArrayList,添加元素,然后进行删除操作: ```csharp ArrayList myList = new ArrayList(); myList.Add("Element1"); myList.Add("Element2"); Console.WriteLine(myList[1]); // 输出 "Element2" ...

    3.java集合面试题1

    - 当向ArrayList添加元素时,会自动扩展容量。首先调用`ensureCapacityInternal(size + 1)`,然后根据当前元素数量和默认容量(通常是10)取较大值,再通过`grow`方法增加容量,通常是原容量的一半。 3. **HashMap...

    ArrayList的实现原理

    当添加元素导致容量不足时,ArrayList会自动扩大数组容量。 - **增长策略**:当元素数量达到数组容量极限时,ArrayList会创建一个新的更大容量的数组,并将旧数组的所有元素复制到新数组中。这个过程称为扩容。为了...

    ArrayList转化为DataTable

    columnIndex++)` 这两层循环遍历ArrayList的所有元素和每个元素的所有属性。通过`InvokeMember`方法获取属性值,并将其转换为字符串,然后存入DataTable的新行`drRow`中。如果属性值不为null,才将其添加到行中。 ...

    ArrayList类操作程序实例

    二、添加元素 1. `add(E element)`:向ArrayList末尾添加一个元素。 2. `add(int index, E element)`:在指定位置插入一个元素,其余元素依次后移。 三、删除元素 1. `remove(int index)`:删除指定索引处的元素,...

    ASP .NET - ArrayList对象

    使用Add方法向ArrayList中添加元素。Add方法返回新添加元素的索引,这在某些情况下可能很有用。 ```csharp myList.Add("First Item"); myList.Add(123); ``` 4. 访问元素 通过索引来访问ArrayList中的元素,索引从...

Global site tag (gtag.js) - Google Analytics