Java 使用lambda编辑ArrayList中的项
我在编辑Java 使用lambda编辑ArrayList中的项,java,Java,我在编辑ArrayList book=new ArrayList中的项目时遇到问题。 我知道如何在C#LINQ中实现,但我不知道如何在Java8中使用lambda表达式 C#与LINQ合作(有效): books=books.Select(b=>{if(b.title==title)b.title=newTitle;return b;}).ToList() 带有Lambda的Java(不起作用): book=book.stream().filter(b->b.author().equals(tit
ArrayList book=new ArrayList
中的项目时遇到问题。
我知道如何在C#LINQ中实现,但我不知道如何在Java8中使用lambda表达式
C#与LINQ合作(有效):
books=books.Select(b=>{if(b.title==title)b.title=newTitle;return b;}).ToList()代码>
带有Lambda的Java(不起作用):
book=book.stream().filter(b->b.author().equals(title)=newTitle)代码>
你能帮我吗?book.stream().filter(b->b.author().equals(title)).forEach(b->b.setTitle(newTitle))
。但是,请注意,这具有糟糕的性能特征,如果您在一个包含多个项目(>100)的列表中多次执行此操作,请使用映射
!真的谢谢!我只想对几个元素进行几次编辑。碰巧,您的LINQ示例似乎在Select
方法中对一个对象进行了变异—这是一个例子。LINQ和Java8Stream
都希望有一些lambda,而您所做的可能会导致潜在的、难以诊断的bug。在使用函数编程API之前,请先了解函数编程概念book.stream().filter(b->b.author().equals(title)).forEach(b->b.setTitle(newTitle))
。但是,请注意,这具有糟糕的性能特征,如果您在一个包含多个项目(>100)的列表中多次执行此操作,请使用映射
!真的谢谢!我只想对几个元素进行几次编辑。碰巧,您的LINQ示例似乎在Select
方法中对一个对象进行了变异—这是一个例子。LINQ和Java8Stream
都希望有一些lambda,而您所做的可能会导致潜在的、难以诊断的bug。在使用函数编程API之前,请先了解函数编程概念!