每当我尝试使用 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);
}
}
为什么不起作用?
答案 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类型(可调整大小且可移动的项目)