我正在尝试在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”。
答案 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
implementation
而add
方法没有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