Arrays.asList添加元素报java.lang.UnsupportedOperationException
2023-12-21 06:26:32
问题现象
java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at com.yxxmg.collection.CollectionTest.test(CollectionTest.java:21)
问题分析
先分析下Arrays.asList
,java.util.Arrays#asList
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
public boolean add(E e) {
add(size(), e);
return true;
}
public void add(int index, E element) {
throw new UnsupportedOperationException();
}
由此可以看出asList其实就是就是一个定长数组且不能被修改,类似apache commons-collections
中的Collections.unmodifiableList()
解决方案
1.使用Guava
的Lists
2.使用Stream.of()
操作
3.使用Arrays.stream()
4.使用new ArrayList<>(Collection<? extends E> c)
示例代码
https://gitee.com/youxiaxiaomage/java-practices/blob/master/yxxmg-java-helper/src/test/java/com/yxxmg/collection/CollectionTest.java
文章来源:https://blog.csdn.net/youxiaxiaomage/article/details/135066719
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!