ArrayList之add()方法简介说明

欣喜 Java经验 发布时间:2024-01-02 10:38:50 阅读数:13435 1
下文笔者讲述Arraylist中add()方法的简介说明,如下所示

add()方法简介

add方法的功能 
      在数组的指定位置上
        赋值元素
例:add 添加元素至末尾
//添加一个特定的元素到list的末尾
public boolean add(E e) {
   //先确保elementData数组的长度足够
   //size是数组中数据的个数
  //当要添加一个元素,所以size+1
  // 先判断size+1的这个个数数组能否放得下
    //ensureCapacityInternal方法中去判断数组长度是否够用

   ensureCapacityInternal(size + 1);  // Increments modCount!!
   //在数据中正确的位置上放上元素e,并且size++
   elementData[size++] = e;
   return true;
}

在指定位置添加一个元素

public void add(int index, E element) {
   rangeCheckForAdd(index);

   //先确保elementData数组的长度足够
   ensureCapacityInternal(size + 1);  // Increments modCount!!
   //将数据整体向后移动一位,空出位置之后再插入,效率不太好
   System.arraycopy(elementData, index, elementData, index + 1,
                        size - index);
   elementData[index] = element;
   size++;
}

// 校验插入位置是否合理
private void rangeCheckForAdd(int index) {
   //插入的位置肯定不能大于size 和小于0
   if (index > size || index < 0)  
       //如果是,就报越界异常
       throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

ArrayList中添加一个集合

public boolean addAll(Collection<? extends E> c) {
   //把该集合转为对象数组
   Object[] a = c.toArray();
   int numNew = a.length;
   //增加容量
   ensureCapacityInternal(size + numNew);  // Increments modCount
   //挨个向后迁移
   System.arraycopy(a, 0, elementData, size, numNew);
   size += numNew;
   //新数组有元素,就返回 true
   return numNew != 0;
}

//在指定位置,添加一个集合
public boolean addAll(int index, Collection<? extends E> c) {
   rangeCheckForAdd(index);

   Object[] a = c.toArray();
   int numNew = a.length;
   ensureCapacityInternal(size + numNew);  // Increments modCount

   int numMoved = size - index;
   //原来的数组挨个向后迁移
   if (numMoved > 0)
       System.arraycopy(elementData, index, elementData, index + numNew,
                        numMoved);
   //把新的集合数组 添加到指定位置
   System.arraycopy(a, 0, elementData, index, numNew);
   size += numNew;
   return numNew != 0;
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202401/17041631727617.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者