Java 如何使用scala中的函数编程过滤列表?

Java 如何使用scala中的函数编程过滤列表?,java,scala,functional-programming,Java,Scala,Functional Programming,我有两份清单: val list1 = List("asdf", "fdas", "afswd", "dsf", "twea", "rewgds", "werwe", "dsadfs"); val list2 = List(); 我想筛选列表1和设置列表2中的所有项目,以便它只包含不包含字母“a”的项目。我知道如何使用命令式编程实现这一点,但如何使用函数式编程实现这一点?几乎是您需求定义的字面表示: val list2 = list1.filterNot(item => item.con

我有两份清单:

val list1 = List("asdf", "fdas", "afswd", "dsf", "twea", "rewgds", "werwe", "dsadfs");
val list2 = List();

我想筛选列表1和设置列表2中的所有项目,以便它只包含不包含字母“a”的项目。我知道如何使用命令式编程实现这一点,但如何使用函数式编程实现这一点?

几乎是您需求定义的字面表示:

val list2 = list1.filterNot(item => item.contains('a'))
// List[String] = List(dsf, rewgds, werwe)

针对您对@om nom nom回答的评论:

val list2 = for(item <- list1 if !item.contains("a")) yield item

val list2=for(谢谢,我想我真正需要的是找出Scala没有默认实现的东西在每个对象上,然后只返回ID包含“a”字符的项目?我删除了说明这一点的帖子,但迭代对任何对象都有效。@TritonMan完全一样:
xs.filter(obj=>obj.getId.contains('a'))
(注意,filterNot与filter相对)。可以将前面的代码写成
list1.filter(item=>!item.contains('a'))
,但我更喜欢这种过滤/过滤方式。作为旁注,@cmbaxter和我的解决方案。是的,我想我明白了。而且,看起来我可能可以使用uu.contains()而不是“item=>item.contains()”。这是同一回事吗?@TritonMan是的,这是一种简写语法