List集合中的add和addAll的区别
一,前言:
在工作中, 我们用的比较多的就是集合就是list集合和map集合了。特别是如果只是存储多个对象,那list真实再好用不过了。
我们平时在添加元素的时候用的最多的就是add()方法,而 对于添加元素其实还要个方法就是addAll() ,那这两者都是用来作为一个添加元素的存在,又有什么区别和联系呢?
二,List中的add和addAll方法:
在jdk中的官方文档中,是这样描述的:
2.1 区别:
- 可以看到,add方法是将元素可以插在指定的位置,如果参数只有一个的话就默认插在队列的尾部,而对于addAll方法,可以看其实作用差不多,但是参数必须为Collection 集合。
- add方法参数为泛型E,所以他是支持任意类型的,但是这里要注意的一点是,如果你使用add方法并且传的参数为集合,那么其实 list集合会把这个参数中的集合当做一个整体,添加到原本的集合中。
而addAll方法,则会把参数里面的集合给分别放进原本的集合中;
2.2 源码:
可以看到实际添加功能是在它的父类里面的addAll方法中实现的。
现在它的原理就很简单了,它是通过一个forEach 循环遍历后得到参数集合中的每个元素,在循环里面再分别调用add方法来实现这个功能。
看到这是不是恍然大悟,现在叫你自己写,你还写不出来吗?