为什么这个lambda表达式出错了

时间:2016-01-15 01:01:59

标签: java

以下代码有什么问题? list.removeIf(p -> p.contains("hello"));

import java.util.*;
public class NewClass1 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("hello", " hello world", " hello china", "chi", "hi");
        System.out.println(list);

        list.removeIf(p -> p.contains("hello"));
        System.out.println(list);
    }
}

1 个答案:

答案 0 :(得分:3)

Arrays.asList()返回固定大小的列表。请在此处查看javadoc:https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T...)

因此,您无法在返回的List对象中添加或删除项目。

相反,您可以创建自己的列表实例:

List<String> list = new ArrayList<>(Arrays.asList("hello", " hello world", " hello china", "chi", "hi"));

您仍然可以使用asList()方便地创建列表,但通过构建ArrayList实例,它可以完全修改。