【发布时间】:2020-12-31 04:03:28
【问题描述】:
说,我有一个 Config 类如下(我已经包含了下面的类)
(parentType, subType) 对可以有以下之一 {(0, 0), (X, 0), (X, Y)} 其中 X > 0,Y > 0。父类型或子类型的值为 0 表示它是常见配置。非零值是特定配置。通用配置适用于所有类型,尤其是在没有特定配置的情况下。
如果我有一个具有以下值的 Config 对象列表(List),则以这种格式给出的值(类别、父类型、子类型、值):
("A", 0, 0, 5), ("A", 2, 0, 6), ("A", 2, 1, 9)
("B", 0, 0, 5), ("B", 2, 0, 6),
("C", 0, 0, 5), ("C", 4, 0, 13)
("D", 4, 1, 11), ("D", 4, 0, 9)
如果我正在搜索父类型 = 2 和子类型 = 1 的配置,我希望将以下列表作为结果列表。
("A", 2, 1, 9), ("B", 2, 0, 6), ("C", 0, 0, 5)
我们没有得到“D”对象,因为在“D”下,我们没有特定的父类型 2,也没有共同的父类型 0。
同样,如果我正在搜索父类型 = 4 和子类型 = 1 的配置,我希望将以下列表作为结果列表。
("A", 0, 0, 5), ("B", 0, 0, 5), ("C", 4, 0, 13), ("D", 4, 1, 11)
对于父类型 4,子类型 1(只是一个想法编码如下) list.stream().filter(oneConf -> (4.equals(oneConfig.getParentType()) && 1.equals(oneConfig.getSubType()))).findFirst().orElse(null)
上面只会给出 4 和 1 的配置。 我可以再吃两个 list.stream().filter(4 和 0 的条件)... list.stream().filter(0 和 0 的条件)...
给定父类型 4 和子类型 1,我们是否可以得到以下结果列表,具有 Java 8 的特性,而无需编写许多代码循环。 ("A", 0, 0, 5), ("B", 0, 0, 5), ("C", 4, 0, 13), ("D", 4, 1, 11)
public class Config {
String category;
Integer parentType;
Integer subType;
Integer value;
public Config() {}
public Config(String pCategory, Integer pParentType, Integer pSubType, Integer pValue) {
category = pCategory;
parentType = pParentType;
subType = pSubType;
value = pValue;
}
}
【问题讨论】:
标签: java