2015-04-30 113 views
-1

This link数组列表中删除一个字符串说,我可以通过该参数直接解决它,就像删除一个字符串:错误尝试从字符串

myList.remove("myString"); 

而是试图做到这一点,我得到了java.lang.UnsupportedOperationException异常。

UPDATE 我用它来创建和填充列表代码:

List<String> myList = new ArrayList<>(myArray.length); 
for (String str : myArray) { 
    myList.add(str); 
} 

我得到的异常而执行的代码:

if (myList.contains("specificString")) 
    myList.remove("specificString"); 
} 

我该如何删除该元素则没有使用for循环或索引?

+0

什么类型的myList? – Jayan

+0

你的标题和问题是不同的。你已经说过发生了一个异常,但是你对java方法的解释有疑问。 – Blip

+0

你如何创建列表?你可能会遇到这个问题: http://stackoverflow.com/a/2965808/421749 – astuetz

回答

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 
0

List接口(Java .util.List)包含一个方法remove(object)。不是所有的实现都支持这种方法。对于没有实现这个方法的实现,你会得到这个异常。它甚至被记录在这里:

https://docs.oracle.com/javase/7/docs/api/java/util/List.html#remove(java.lang.Object)

如果您使用ArrayList,那么你应该罚款。如果您使用一些自定义的固定大小实现或其他不支持该操作的实现,则不能使用此方法。