This link说我可以通过使用参数直接寻址来删除字符串,例如:
myList.remove("myString");
但是尝试这样做我得到了 java.lang.UnsupportedOperationException 异常。
更新 我用来创建和填充列表的代码:
List<String> myList = new ArrayList<>(myArray.length);
for (String str : myArray) {
myList.add(str);
}
代码我在执行时得到异常:
if (myList.contains("specificString"))
myList.remove("specificString");
}
如何在不使用for循环或索引的情况下删除此元素?
答案 0 :(得分:1)
假设你有一个ArrayList,理想情况下你可以使用list.remove(obj)从列表中删除对象,除非列表是不可修改的,如下所示:
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
System.out.println(list); // [a,b,c]
list.remove("a");
System.out.println(list); // [b,c]
List<String> unmodifiable = Collections.unmodifiableList(list);
unmodifiable.remove("b"); // UnsupportedOperationException
答案 1 :(得分:0)
List接口(java.util.List)包含方法remove(object)。但并非所有实现都支持该方法。对于未实现此方法的实现,您将获得此异常。它甚至记录在这里:
https://docs.oracle.com/javase/7/docs/api/java/util/List.html#remove(java.lang.Object)
如果您使用ArrayList,那么您应该没问题。如果您使用某些自定义固定大小的实现或其他不支持该操作的实现,那么您将无法使用此方法。