关于arrayList的add和addall
来源:互联网 发布:2008年nba西部决赛数据 编辑:程序博客网 时间:2024/06/05 00:32
花了一周时间,重构了系统中最重要的一段下发打印逻辑的代码,理清了各类型间的调用关系,得意之际,测试告诉代码数据异常了,花了5个小时的测试,终于发现了问题,用错了ArrayList的addAll方法,下面列举下add和addAll方法。
ArrayList是一个实现可变长数组,继承AbstractList类,实现所有的List接口,还实现了RandomAccess、Cloneable、Serializable接口。
add源代码:
public boolean add(E e) {
ensureCapacityInternal(size + 1);
elementData[size++] = e;
return true;
}
addAll源代码:
//将Collection c内的数据插入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;
return numNew != 0;
}
//将Collection c中的数据插入到ArrayList的指定位置
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;
}
可以看出,add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素,而addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List的大小
- 关于arrayList的add和addall
- 关于arrayList的add和addall
- 关于List的add方法与addAll方法的区别
- 关于List的add方法与addAll方法的区别
- List 的 add 和 addAll 方法的区别
- list的add和addAll的不同区别
- 浅谈java.util.Vector类的add()和addAll()方法
- 浅谈java.util.Vector类的add()和addAll()方法
- Java Collections.addAll() 与 ArrayList.addAll() 的区别
- Java Collections.addAll() 与 ArrayList.addAll() 的区别
- 简析list.add() 和list.addAll()
- List 的add()与addAll()的区别
- List 的add()与addAll()的区别
- ArrayList的addAll 与 for循环比较
- ArrayList的addAll方法使用注意
- list 的add addall
- Set接口的add,addAll,retainAll方法
- 容器类add()与addall()的demo
- VC之键盘响应相关
- JVM,JRE,JDK
- 各种排序算法的实现-3(2路插入排序)
- android SpannableString使用详解
- DSP 学习指南
- 关于arrayList的add和addall
- android native开发环境搭建
- 浅谈Java内部类的四个应用场景
- timerfd的简单应用一例
- <版本控制>Windows下搭建VisualSVN服务端与客户端
- 选择排序与冒泡排序的比较
- 关于C++使用中总结的一些东西(第三章)
- C#中public、protected、internal、private权限比较
- git服务器