【问题标题】:List Exception java.lang.UnsupportedOperationException [duplicate]列出异常 java.lang.UnsupportedOperationException [重复]
【发布时间】:2019-10-24 03:45:40
【问题描述】:

尝试向列表添加新项目时,我不断收到java.lang.UnsupportedOperationException,例如项目.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);
    }

}

【问题讨论】:

    标签: java arraylist stream


    【解决方案1】:

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

    它返回一个实现List接口的特殊类的对象(不是ArrayListLinkedList)。所有改变大小的方法都实现为抛出java.lang.UnsupportedOperationException

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

    【讨论】:

    • 使用List&lt;Item&gt; Items = new ArrayList&lt;&gt;(Arrays.asList(new Item(1, 30), new Item(2, 50), new Item(2, 40)));
    • 我投了反对票。请不要回答明显的重复。
    猜你喜欢
    • 2017-09-29
    • 2013-09-10
    • 2017-09-28
    • 2020-11-05
    • 2020-06-15
    • 2014-03-31
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多