List的removeIf()无法正常工作

时间:2018-06-20 06:37:22

标签: java arraylist

每当我尝试使用 list.removeIf(condition)List删除元素时,都会抛出UnsupportedOperationException

public class Test 
{
    public static void main(final String[] args) 
    {
        String[] stringArray = new String[]{"A","B","C","D"}; 
        List<String> stringList = Arrays.asList(stringArray); 
        stringList.forEach(System.out::println); 
        stringList.removeIf((String string) -> string.equals("B")); 
        stringList.forEach(System.out::println); 
    }
}

为什么不起作用?

2 个答案:

答案 0 :(得分:7)

Arrays.asList返回固定大小的List-由您传入的数组支持-因此,就像您无法从数组中删除(或添加)元素一样,您也无法删除(或添加)列表中的元素。

使用java.util.ArrayList才能删除元素:

List<String> stringList = new ArrayList<>(Arrays.asList(stringArray)); 

答案 1 :(得分:0)

Array.asList方法返回类型为java.util.Arrays.ArrayList的ArrayList(只读且固定大小),而不返回经典的java.util.ArrayList类型(可调整大小且可移动的项目)