为什么我无法使用 Arrays.asList() 对集合使用 addall 方法,而我可以使用新的 Arraylist 成功

问题描述 投票:0回答:1

对 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]
java java-8
1个回答
0
投票

这是因为

Arrays.asList()
返回一个不可变列表。因此,不支持
add
addAll

© www.soinside.com 2019 - 2024. All rights reserved.