尝试从字符串数组列表中删除字符串时出错

时间:2015-04-30 11:25:12

标签: java list

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循环或索引的情况下删除此元素?

2 个答案:

答案 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,那么您应该没问题。如果您使用某些自定义固定大小的实现或其他不支持该操作的实现,那么您将无法使用此方法。