-4

我有一个ArrayList. 当我尝试删除一个项目时,我得到一个UnsupportedOperationException. 我该如何解决?请任何人帮忙。

这里我的代码是:

static List<String> availableFormsList = new ArrayList<String>();
availableFormsList.add("a");   
availableFormsList.remove("a");
4

5 回答 5

1

java.util.ArrayList支持删除其元素。检查availableFormsList是否没有被其他实现List(例如 from Arrays.asList)替换。

我正在使用 availableFormsList = Arrays.asList(answersList)

此渲染将引用替换为无法从中删除元素List的固定大小。List解决方案:不要availableFormsList用这个替换List

于 2013-06-21T11:49:14.730 回答
1

这工作得很好:

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);
        }
    }
}
于 2013-06-21T11:50:22.120 回答
0

您可能有另一个 ArrayList 由您声明?

public static class ArrayList<T> extends java.util.ArrayList<T> {

    public boolean remove(Object o) {
        throw new UnsupportedOperationException();
    }
}

否则,您发布的代码与您正在执行的代码不同。

于 2013-06-21T11:56:45.630 回答
0

你试过这个吗?

    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());
        }
    }
于 2013-06-21T12:58:29.287 回答
-1

由于 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() 来生成列表。

于 2013-06-21T11:56:47.170 回答