对 addAllmethod 的奇怪行为感到困惑。使用 Arrays.aslist() 和使用 new ArrayList() 创建列表时的行为不同。 有人可以指出为什么会这样吗?
list1.addAll(list2) 不适用于片段 1
List<Integer> list1 = Arrays.asList(1,3,5); // list is created using Arrays.asList()
List<Integer> list2 = Arrays.asList(2,4,6);
// combined
list1.addAll(list2);
//sorting
List sortedList =list1. stream().sorted().collect(Collectors.toList());
System.out.println(sortedList);
输出:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
at SortedDemo.mergeAndSortListType2(SortedDemo.java:26)
at SortedDemo.main(SortedDemo.java:18)
// 列表是使用 new ArrayList() 创建的
List<Integer> list1 =new ArrayList();
list1.add(1);
list1.add(3);
list1.add(5);
List<Integer> list2 =new ArrayList();
list2.add(2);
list2.add(4);
list2.add(6);
// combined
list1.addAll(list2);
//sorting
List sortedList =list1. stream().sorted().collect(Collectors.toList());
System.out.println(sortedList);
输出:
[1, 2, 3, 4, 5, 6]
这是因为
Arrays.asList()
返回一个不可变列表。因此,不支持 add
和 addAll
。