列表异常java.lang.UnsupportedOperationException

时间:2019-06-09 12:24:50

标签: java arraylist stream

尝试将新项目添加到列表时,我不断收到java.lang.UnsupportedOperationException,例如Items.add(p);您能否帮助我理解为什么我会收到此例外情况?

import java.util.Arrays;
import java.util.List;

public class Item {
    int id; int price;

    public Item(int id, int price) {
        this.id = id;
        this.price = price;
    }

    @Override
    public String toString() {
        return id + ":" + price;
    }

    public static void main(String[] args) {

        List<Item> Items = Arrays.asList(new Item(1, 30), new Item(2, 50), new Item(2, 40)  );

                Item p = Items.stream().reduce(new Item(4,0),(p1, p2) -> {
            p1.price += p2.price;
            return new Item(p1.id, p1.price);
            });

        System.out.println(p);
        Items.add(p);

        Items.stream().parallel().reduce((p1,p2) -> p1.price > p2.price?p1:p2).ifPresent(System.out::println);
    }

}

1 个答案:

答案 0 :(得分:1)

Arrays.asList方法返回由提供的数组支持的固定大小的列表。您不能在其中添加或删除元素。

它返回实现ArrayList接口的特殊类的对象(不是LinkedListList)。所有尺寸更改方法都实现为抛出java.lang.UnsupportedOperationException

如果您希望List能够添加更多元素,请创建一个ArrayList并将元素添加到其中。