list集合使用addall 为什么返回的是boolean对象

这个其实可以看一下,list的add  增加元素.  返回的也是boolean值

    List<String> list=new ArrayList<>();
    System.out.println(list.add("a"));
    //true
    System.out.println(list.add("a"));
    //true
    System.out.println(list.add("a"));
    //true
    System.out.println(list.add("b"));
    //true

所以  这:因为通过源码我们可以看到它通过是否修改原有集合来返回true或者false,而多数情况下,List内容可以重复,所以相当于它的内容始终在改变,所以返回为true)   addall  也是这个也好理解了,不同的我们可以看一下addall  使用的是  浅拷贝的

但是使用addall的效率比较高的.应用

ArrayList的addAll的实现为:

[java] view
plaincopy

public boolean addAll(Collection c) {
Object[] a = c.toArray();
int numNew = a.length;
ensureCapacity(size + numNew); // Increments modCount
System.arraycopy(a, 0, elementData, size, numNew);
size += numNew;
return numNew != 0;
}

我们可以得到的结论是:

1.使用内存拷贝,移动数据。

2.本地函数,执行效率高。

那小数据量时呢?

以上2点都不明显,并且首先要调用toArray方法,在小数据量时,效果没有for来的好。


发布了108 篇原创文章 · 获赞 69 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_42114097/article/details/89529666