尝试将新项目添加到列表时,我不断收到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);
}
}
答案 0 :(得分:1)
Arrays.asList
方法返回由提供的数组支持的固定大小的列表。您不能在其中添加或删除元素。
它返回实现ArrayList
接口的特殊类的对象(不是LinkedList
或List
)。所有尺寸更改方法都实现为抛出java.lang.UnsupportedOperationException
。
如果您希望List
能够添加更多元素,请创建一个ArrayList
并将元素添加到其中。