首页 > 解决方案 > 列出异常 java.lang.UnsupportedOperationException

问题描述

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);
    }

}

标签: javaarrayliststream

解决方案


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

它返回实现接口的特殊类(非ArrayList或)的对象。所有改变大小的方法都被实现为 throw 。LinkedListListjava.lang.UnsupportedOperationException

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


推荐阅读