连接两个字符串数组会抛出UnsupportedOperationException

时间:2011-05-06 04:01:35

标签: java

    String[] aArr = ...;
    String[] bArr = ...;

    List<String> images = Arrays.asList(aArr);
    images.addAll(Arrays.asList(bArr));

在addAll处抛出以下异常,如果单独添加第二个列表的元素,也会引发相同的异常。

java.lang.UnsupportedOperationException
09:06:57,156 ERROR [STDERR] at java.util.AbstractList.add(AbstractList.java:
131)
09:06:57,156 ERROR [STDERR] at java.util.AbstractList.add(AbstractList.java:
91)

我该如何纠正这个问题?

2 个答案:

答案 0 :(得分:3)

像这样:

List<String> images = new ArrayList<String>();
images.addAll(Arrays.asList(aArr));
images.addAll(Arrays.asList(bArr));

请注意,根据documentationArrays.asList()会返回固定大小列表。因此,如果要连接两个数组,则需要分配自己的可变大小的列表来执行此操作。

答案 1 :(得分:3)

Arrays.asList(aArr);

返回一个不可变列表(好吧,无论如何都是大小),因为列表只是指你调用get(i)时的初始数组。所以创建另一个不是这样的,例如

List<String> images = new ArrayList(Arrays.asList(aArr));