在使用Arrays.asList()之后,Java List <string>未添加到列表中

时间:2015-11-26 10:00:38

标签: java arrays string list

我正在尝试在Java中执行以下操作:

String pageName = "MyPage";
String pageSpace= "SpaceA.SpaceB";
List<String> spaceList = new ArrayList<String>();
String[] spaceArr = pageSpace.split("\\.");
spaceList = Arrays.asList(spaceArr);
spaceList.add(pageName);

为什么我无法在列表中添加字符串? 我可以做spaceList.get(0)和spaceList.get(1)返回“SpaceA”和“SpaceB”但是spaceList.get(2)失败,它应该返回“MyPage”。

3 个答案:

答案 0 :(得分:3)

Arrays.asList返回由传递给它的数组支持的固定大小的List。您无法在该列表中添加/删除元素。

您甚至无法访问spaceList.get(2)语句,因为spaceList.add(pageName)应首先抛出UnsupportedOperationException(也许您已抓住该异常)。

要解决此问题,请创建一个新的ArrayList

spaceList = new ArrayList<String>(Arrays.asList(spaceArr));

答案 1 :(得分:1)

要添加更多内容,Arrays.asList会返回instance AbstractList implementationadd方法没有UnsupportedOperationException,因此您会收到{{1}来自AbstractList

答案 2 :(得分:0)

let ntup = (1, "a", "b", 5, "c") nmtup = reduce ntup 3 没有给你Arrays.asList的实例,而是给它自己的AbstractList实现的对象,它是Arrays类中的静态内部类:

java.util.ArrayList

虽然您可以对返回列表进行排序,迭代,但它不支持添加/删除操作。

您可能正在寻找此处讨论的内容:Converting String array to java.util.List