在本教程中,我们展示了如何使用 Java 过滤列表。
本教程介绍了六种过滤列表的方法。 我们使用四个不同的库:Apache Commons,Google Guava,Eclipse Collections 和 Spring core。
在所有六个示例中,我们将过滤人员列表。 Person
是具有三个属性的 Java 类:age
,name
和sex
。
使用 Java for
循环过滤列表
在第一个示例中,我们使用迭代来过滤 Java 中的列表。
com/zetcode/Person.java
我们有这个Person
bean。 我们将过滤包含这些 bean 的列表。 toString()
方法给出了 bean 的字符串表示形式。 当我们打印过滤后的元素列表时,这将很有帮助。
com/zetcode/FilterListEx.java
该示例过滤人员列表。 结果列表包含 30 岁以上的人。
一个 for 循环用于遍历人员列表并创建一个新的具有 30 岁以上人员的人员。
这是示例的输出。
使用 Java 8 流过滤列表
在下一个示例中,我们使用 Java 8 流 API 来过滤列表。
com/zetcode/FilterListEx2.java
Java 流 API 用于过滤数据以仅包含 30 岁以上的人员。
该谓词返回年龄大于三十的元素。
persons
列表用谓词过滤,并生成一个新的结果列表。
使用 Apache CollectionUtils
过滤列表
在下一个示例中,我们使用 Apache CollectionUtils
过滤数据。 它为Collection
实例提供了实用程序方法和修饰符。
我们使用这些 Maven 依赖项。 commons-lang
用于toString()
方法中使用的ToStringBuilder
。
com/zetcode/Person.java
toString()
方法内部的ToStringBuilder()
对Person
bean 进行了改进。
com/zetcode/FilterListEx3.java
该示例使用 Apache Commons 库中的 Apache CollectionUtils
过滤人员 bean 列表。
将创建列表的新副本。
CollectionUtils.filter()
通过对每个元素应用谓词来过滤集合。 如果谓词返回false
,则删除该元素。
使用 Google Guava 过滤列表
在以下示例中,我们使用 Google Guava 过滤列表。 Google Guava 是 Java 通用库的开源集。
对于 Guava 库,我们使用此依赖项。
com/zetcode/Person.java
MoreObjects.toStringHelper()
用于改进toString()
方法。
com/zetcode/FilterListEx4.java
该代码示例过滤列表以仅包含男性。
我们使用 Guava 的newArrayList()
方法在一张照片中创建一个可变列表。
对于男性,此谓词返回true
。
使用FluentIterable
,我们使用谓词过滤原始列表并将其放入新列表中。
使用 Eclipse 集合过滤列表
在以下示例中,我们将使用 Eclipse Collections 过滤列表。
Eclipse 集合是 Java 的集合框架。 它具有与 JDK 兼容的List
,Set
和Map
实现,并具有丰富的 API,在 JDK 中找不到的其他类型(例如Bags
,Multimaps
)以及与所有与 JDK 兼容的任何工具Collections
,Arrays
,Maps
或Strings
。
对于程序,我们使用这两个 Mave 依赖项。
com/zetcode/FilterListEx5.java
该代码示例创建一个包含 30 岁以下人员的过滤列表。
创建谓词以接受年龄小于 30 的元素。
Iterate.select()
返回一个新集合,其中仅包含对于指定谓词评估为 true 的元素。
使用 Spring 的CollectionUtils
过滤列表
在下一个示例中,我们将使用 Spring 的CollectionUtils
过滤列表。 它包含其他收集实用程序方法。
该项目包含 Spring Core JAR 的 Maven 依赖项。
com/zetcode/FilterListEx6.java
该代码示例使用 Spring 的CollectionUtils
创建一个过滤列表,其中包含 30 岁以上的人员。
与 Apache CollectionUtils
类似,将创建原始列表的副本。 该示例将修改result
列表。
CollectionUtils.filter()
方法使用给定的谓词过滤result
列表。
This is the output of the example.
在本教程中,我们使用了六种不同的方法来过滤 Java 列表。