在 java 1.8 中使用 lambda 时出错

Posted

技术标签:

【中文标题】在 java 1.8 中使用 lambda 时出错【英文标题】:Error when using lambda in java 1.8 【发布时间】:2016-01-28 00:06:17 【问题描述】:
public static void main(String[] args) 
    List<Integer> list = Arrays.asList(4, 5, 6, 7);
    list.forEach(x -> 
        x = x * 9;
        System.out.println(x);
    );

    JButton btn = new JButton("aa");

    ActionListener ae = e -> ;
    btn.addActionListener(ae);

    List<Student> stds = new ArrayList<>();

    for(int i =0; i < 10; i++)
    
        stds.add(new  Student((int)(Math.random()*100), (int)(Math.random()*100)));            
    

    System.out.println("Original List");
    stds.forEach(x -> System.out.println(x));

    System.out.println("\nModified List"); 
    filter(stds,x->x.gpa>15).forEach(x -> System.out.println(x));

    System.out.println(convert(51,t->String.valueOf(t)));


这是我的讲师代码,它是 100% 正确的,但是当我在我的 PC 上运行它时它给了我错误。我认为问题是我的 IDE??

【问题讨论】:

另外,学生也不见了。请添加。 您确认您正在使用 Java 8 进行编译吗? 【参考方案1】:

我认为这是错误的。

System.out.println("\nModified List"); 
filter(stds,x->x.gpa>15).forEach(x -> System.out.println(x));

你过滤什么?您可以在流中使用过滤器。 例如:

list.stream().filter(your predicate).forEach(do something);

我想你想要这样的东西:

stds.stream().filter(x->x.gpa>15).forEach(x -> System.out.println(x));

【讨论】:

以上是关于在 java 1.8 中使用 lambda 时出错的主要内容,如果未能解决你的问题,请参考以下文章

lambda之美

彻底搞明白JDK 1.8 Lambda 表达式

1.5 中不支持 lambda 表达 java

在lambda中使用静态方法时出错

我的Android进阶之旅Android Studio Dolphin | 2021.3.1版本,配置使用java 1.8 出错

我的Android进阶之旅Android Studio Dolphin | 2021.3.1版本,配置使用java 1.8 出错