在本文中,我们将研究 ArrayList addAll 方法。 ArrayList addAll()
方法用于将参数集合的所有元素附加到列表的末尾。
与 ArrayList add() 方法类似,ArrayList 中的 addAll()
方法会自动为我们处理许多事情。
这是JDK中ArrayList add方法的签名
public boolean addAll(Collection << ? extends E > c) {
return addAll(this.size, c);
}
public boolean addAll(int index, Collection << ? extends E > c) {
rangeCheckForAdd(index);
int cSize = c.size();
if (cSize == 0)
return false;
checkForComodification();
root.addAll(offset + index, c);
updateSizeAndModCount(cSize);
return true;
}
JDK 内部使用 List 的大小来查找索引并将集合添加到现有列表的末尾。
ArrayList addAll(Collection<? extends E> c) 方法将集合的所有元素添加到列表的末尾,按照它们由 /* 指定集合的迭代器返回的顺序。让我们看一下下面的例子,以便更好地理解。
List < String > list = new ArrayList < > ();
list.add("Sunday");
list.add("Monday");
list.add("Tuesday");
<strong>//output</strong>
<strong>[Sunday, Monday, Tuesday]</strong>
List < String > newList = new ArrayList < > ();
newList.add("Wednesday");
newList.add("Thursday");
newList.add("Friday");
newList.add("Saturday");
//merge both list
list.addAll(newList);
<strong>//output</strong>
<strong>[Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]</strong>
请注意,如果我们在操作进行时更改了指定的集合,则此操作的行为未定义
如果我们尝试将元素添加到 Arrays.asList
方法生成的列表中,ArrayList addAll()
方法将抛出 UnsupportedOperationException
。让我们看看下面的例子:
List < String > list = Arrays.asList("Sunday", "Monday", "Tuesday");
List < String > newList = new ArrayList < > ();
newList.add("Wednesday");
newList.add("Thursday");
newList.add("Friday");
newList.add("Saturday");
list.addAll(newList);
如果我们运行上面的例子,你会得到java.lang.UnsupportedOperationException
。发生这种情况的原因如下
Arrays.asList
:返回由指定数组支持的固定大小列表。如果我们想在 ArrayList 的指定位置添加集合,我们可以使用 addAll(int index, Collection c)
将输入添加到列表的特定位置。此方法将执行以下任务。
List < String > list = new ArrayList < > ();
list.add("Sunday");
list.add("Monday");
list.add("Tuesday");
<strong>//output</strong>
<strong>[Sunday, Monday, Tuesday]
</strong>
List < String > newList = new ArrayList < > ();
newList.add("Wednesday");
newList.add("Thursday");
newList.add("Friday");
newList.add("Saturday");
//merge both list
list.addAll(1, newList);
<strong>//output
[Sunday, Wednesday, Thursday, Friday, Saturday, Monday, Tuesday]</strong>
让我们看看我们在本文中讨论的两个用例的完整示例:
public class ArraylistAddAllExample {
public static void main(String[] args) {
List < String > list = new ArrayList < > ();
list.add("Sunday");
list.add("Monday");
list.add("Tuesday");
//new list
List < String > newList = new ArrayList < > ();
newList.add("Wednesday");
newList.add("Thursday");
newList.add("Friday");
newList.add("Saturday");
//add list at the end of current list
list.addAll(newList);
//output
//[Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
//Add All example at a certain index
List < Integer > integers = new ArrayList < > ();
integers.add(1);
integers.add(100);
integers.add(20);
//create new list
List < Integer > integerList = new ArrayList < > ();
integerList.add(1000);
integerList.add(10);
integers.addAll(1, integerList);
//output
[1, 1000, 10, 100, 20]
}
}
在本文中,我们学习了 ArrayList addAll 方法。 我们看到了如何使用 addAll()
方法将参数集合的所有元素追加到列表的末尾。我们还看到了如何将集合元素附加到列表中的特定索引。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javadevjournal.com/java/arraylist-addall-method/
内容来源于网络,如有侵权,请联系作者删除!