我有两个List<List<String>>
,想要将它们拼接在一起。
这是我的代码:
List<List<String>> a = Arrays.asList(Arrays.asList("a", "b", "c"));
List<List<String>> b = Arrays.asList(Arrays.asList("d", "e", "f"));
a.addAll(b);
但是它无法运行并抛出异常。
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at java.util.AbstractCollection.addAll(AbstractCollection.java:344)
以下代码有效:
List<List<String>> a = new ArrayList<>();
a.add(Arrays.asList("a", "b", "c"));
List<List<String>> b = new ArrayList<>();
b.add(Arrays.asList("d", "e", "f"));
a.addAll(b);
这里有什么区别?
a.addAll(b)
不起作用,那么你肯定做错了什么。请编辑并分享你正在执行的代码。 - azroArrays.asList
会创建一个固定大小的列表,详见文档。如果下一个问题中"不工作"可以更具体一些(它是如何不工作的),但"抛出错误"并不足够,至少要提及异常,最好还包括其堆栈跟踪信息! - user16320675Arrays.asList()
=!=new ArrayList<>()
- 第一个是 方法,第二个是 构造函数 - 第一个返回一个List
(java.util.Arrays$ArrayList
的实例,是Arrays
的嵌套类),第二个创建了一个java.util.ArrayList
的实例(尽管与第一个具有相同的名称 [不幸地],但它们是不同的类)。 - user16320675