为了账号安全,请及时绑定邮箱和手机立即绑定

在对象中搜索关键字

在对象中搜索关键字

互换的青春 2022-05-12 16:35:12
我有一个对象列表,每个对象都有名字和姓氏。我试图为他们的名字创建一个关键字搜索功能,所以我的逻辑是如果我连接他们的名字和姓氏,然后检查两个名字的总和是否包含关键字,将对象作为字符串返回。我试图把它写成一个 lambda 表达式,但我就是不明白。该函数每次都不返回任何内容。我对 lambdas 完全陌生,所以这个简单的任务对我来说非常困难。当我阅读下面的代码时.. 我看到了:每个元素连接它们的名称,然后通过查看字符串是否包含关键字进行过滤,然后将流转换为列表对象,然后将对象转换为字符串,然后返回字符串。感谢任何能提供帮助的人。public String generateUserByKeyword2(String keyword){ return  users.stream()         .map(x-> x.getFirstName() + x.getLastName().toLowerCase())         .filter(x -> x.contains(keyword.toLowerCase()))         .collect(Collectors.toList())         .toString();}  
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

如果您按名字搜索,它不是小写的,正确的行应该是:

     .map(x-> (x.getFirstName() + x.getLastName()).toLowerCase())

(请注意额外的括号,或者您可以通过调用toLowerCase()两者来实现相同的效果)

无论如何,结果将返回错位的串联名称。如果要返回原始对象列表,则必须将maplambda 和filterlambda 连接在一起:

     .filter(x-> (x.getFirstName() + x.getLastName()).toLowerCase().contains(keyword.toLowerCase())
     .collect(Collectors.toList())

此外,您可以通过提前调用toLowerCase()一次来进行一些优化。


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信