【发布时间】:2019-10-21 14:55:52
【问题描述】:
我想按多个字段过滤对象列表,但这些用于过滤的字段可以更改。例如;
假设我们有一个具有一些属性的 Employee 类:
@Data
public class Employee {
private Integer id;
private Integer age;
private String gender;
private String firstName;
private String lastName;
}
编写有时按年龄和性别或有时仅按名字过滤的方法的最佳方法是什么? (可以复制样本,即对于这个例子,它有 5 个属性,所以有 5!= 120 种可能性) 是否可以使用 lambda 或 Java 中的其他东西进行编码?
附: : 任何可能性都不是预定义的。无论请求来自什么,它都应该被它过滤。我相信下面的例子会让这个问题变得清晰:
假设我们有一个 Filter 对象,它与 Employee 的属性相同。如果给定了年龄而其他为空,则此服务将仅按年龄过滤。或者只给出性别和名字,它应该按标准获得员工。
【问题讨论】:
-
创建
Set<Predicate<Employee>>并在每次处理流时选择一个随机谓词。 -
有哪些可能的组合?它们是预定义的还是以某种随机顺序选择的?
-
没有预定义可能的组合,它可能是 n! .实际上,我会将其用作服务。所以无论请求来自什么,它都应该被它过滤。
-
请求的内容是什么?
-
@okduman 是否愿意定义一个
enum,它将这五个属性(类型)映射到一个特定于过滤的Predicate<Employee>?或者过滤条件是否也是您请求的一部分?在这种情况下,你会很想知道,你是如何设计你的 Request 对象的?
标签: java generics lambda filter