java - List 的 removeIf() 未按预期工作

标签 java arraylist

每当我尝试从 List 中删除元素时使用 list.removeIf(condition) 它会抛出 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); 
    }
}

为什么不工作?

最佳答案

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

使用java.util.ArrayList以便能够删除元素:

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

关于java - List 的 removeIf() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50941743/

相关文章:

java - 防止应用程序在读取 NFC 标签时暂停

java - 在JPA中创建表之间的关系

java - 我如何在 Spring 发送自己的回复?

java - 对泛型类和 ArrayLists 的困惑

java - 如果大小写匹配,则从 ArrayList 中删除名称不起作用

java - 图形列表2D

java - 读写文件 - Java 空空间

java - 线程中的代码抛出异常 "main"java.lang.OutOfMemoryError : Java heap space

java - 将唯一的对象实例添加到 ArrayList 中

java - ArrayList#size() 大于实际对象数