我有一个ArrayList
. 当我尝试删除一个项目时,我得到一个UnsupportedOperationException
. 我该如何解决?请任何人帮忙。
这里我的代码是:
static List<String> availableFormsList = new ArrayList<String>();
availableFormsList.add("a");
availableFormsList.remove("a");
我有一个ArrayList
. 当我尝试删除一个项目时,我得到一个UnsupportedOperationException
. 我该如何解决?请任何人帮忙。
这里我的代码是:
static List<String> availableFormsList = new ArrayList<String>();
availableFormsList.add("a");
availableFormsList.remove("a");
java.util.ArrayList
支持删除其元素。检查availableFormsList
是否没有被其他实现List
(例如 from Arrays.asList
)替换。
我正在使用 availableFormsList = Arrays.asList(answersList)
此渲染将引用替换为无法从中删除元素List
的固定大小。List
解决方案:不要availableFormsList
用这个替换List
。
这工作得很好:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* ListDemo
* @author mduffy
* @since 6/21/13 7:45 AM
* @link http://stackoverflow.com/questions/17234415/how-to-remove-item-from-list-interface-in-java
*/
public class ListDemo {
public static void main(String[] args) {
List<String> availableForms = new ArrayList<String>();
Collections.addAll(availableForms, args);
System.out.println("before: " + availableForms);
if (args.length > 0) {
availableForms.remove(args[0]);
System.out.println("after : " + availableForms);
}
}
}
您可能有另一个 ArrayList 由您声明?
public static class ArrayList<T> extends java.util.ArrayList<T> {
public boolean remove(Object o) {
throw new UnsupportedOperationException();
}
}
否则,您发布的代码与您正在执行的代码不同。
你试过这个吗?
public class TestList {
static List<String> availableFormsList = new ArrayList<String>();
public static void main(String arg[]) throws Exception {
String[] myStringArray = {"Java", "is", "Cool"};
availableFormsList.addAll(Arrays.asList(myStringArray));
availableFormsList.add("a");
availableFormsList.remove("a");
availableFormsList.add("Test");
System.out.print("Test out put " + availableFormsList.toString());
}
}
由于 OP 专门询问变量是静态的情况,我将添加另一个答案。
public class Test {
static List<String> availableFormsList = new ArrayList<String>();
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
availableFormsList .add("a");
System.out.println("Size: "+availableFormsList.size());
availableFormsList.remove("a");
System.out.println("Size: "+availableFormsList.size());
}
}
这不会引发任何错误。
编辑:现在很明显,OP 错过了一个重要的细节,即他正在使用 Arrays.asList() 来生成列表。