当前位置: 首页 > 网络应用技术

您还在穿越搜索集吗?让我休息一下!Java 8的行代码真的很优雅!

时间:2023-03-07 10:15:34 网络应用技术

  是的,如果您想搜索列表集合,则可以使用自己的包含/索引方法在Java 8之前找到元素,但只能完成元素,而不是模糊搜索或自定义搜索。目前,它只能旅行。

  但是现在是2021年。您是否仍在使用传统的遍历集合来搜索列表集合元素?

  那你太过了。使用Java 8中的流搜索元素,您可以使用一系列代码来获取它,而且它确实很优雅!本文不会引入流基金会。我在流系列之前写了一个主题。我不了解公共帐户Java Technology Stack,然后在公共帐户Java教程菜单中阅读。

  在Java 8中,清单集合可以转换为流。Stream提供了一系列强大的搜索功能,例如:过滤器,查找*,*匹配和其他方法。

  例如,现在有初始数据:

  用户信息是:名称,年龄,性别。

  过滤器(过滤器)使用过滤器方法实现自定义搜索,例如搜索列表 集合中的所有名称都包含C:

  输出结果:

  findfirst(查找第一个)以查找流中的第一个元素,例如搜索列表 该系列中的第一人称大于30:

  输出结果:

  该示例需要第一个过滤器,然后需要Findfirs,但是如果不需要条件,则无需过滤器。

  如果您不了解流,则可以注意公共帐户Java Technology Stack,然后在公共帐户Java Tutorial菜单中阅读Java系列教程。

  查找(找到任何一个)以在流中找到任何元素,例如搜索列表 收集中的任何人都有大于30的人:

  输出结果:

  为什么与Findfirs相同的结果的结果?Findfirs有什么区别?

  发现纳尔是要找到任何元素。如果数据在串行流中很小,则第一个元素通常会返回,但是并行流中的结果尚不确定。它可能是流中的任何元素。

  Findany的目的是提高并行流动操作的性能,但是如果需要固定的结果,建议使用Findfirst。

  本文的所有完整示例源代码都已上传:

  https://github.com/javastacks/javastack

  任何匹配 该系列中是否有XX人:

  输出结果:

  *比赛返回布尔值的结果。

  notexing(空匹配)查找流中的元素是否没有匹配,例如搜索列表 该系列中是否没有XX人:

  输出结果:

  该方法的作用与Anymatch相反。

  AllMatch(完全匹配)发现流中的元素是否都匹配,例如搜索列表 该系列中的每个人是否大于xx:

  输出结果:

  可以完成上述搜索操作的所有行吗?它非常简单和优雅吗?

  对于列表以外的集合,可以将它们转换为列表,然后转换为流,然后搜索搜索操作。对于流,搜索只是儿科。您学会了使用它吗?

  将其发送给您周围的同事,以使您的代码更加优雅!

  如果您不使用Java 8的新知识点(lambda,流,功能接口等),则可以注意公共帐户:Java Technology Stack,请在Java教程菜单中阅读,Java 8+我写了所有教程束的系列教程。

  本文的所有完整示例源代码都已上传:

  https://github.com/javastacks/javastack

  欢迎学习,其中将提供Java示例!

  好吧,这是今天的分享。后者的堆栈负责人将分享更多有趣的Java技术和最新技术信息。请注意公共帐户Java Technology Stack以推动第一次。完成后,请在公共帐户的背景下回复关键字“访谈”。

  最后,我认为我的文章收获给您,移动我的小手,给我一点手,向前阅读并不容易。创建并不容易。

  公共帐户:Java技术堆栈