【发布时间】:2019-08-26 20:48:31
【问题描述】:
我正在尝试流式传输 A 类型的 List 并根据条件将它们映射到另一个 B 类型的对象。
下面是我的类的结构。
public class A {
private String color;
private Integer actualValue;
private Integer expectedValue;
}
public class B {
private Green green;
private Yellow yellow;
private Red red;
}
public class Green {
private Integer actualValue;
private Integer expectedValue;
}
... 和 Green 类的结构相同,对于 Yellow 和 Red 类也是如此。
我的期望是使用一个listA.stream() 并进行以下映射:
if(colorFromListA.equals("green") {
//then set the "actualValue" from ListA to "actualValue" of
Class Green
}
else if (colorFromListA.equals("yellow") {
//then set the "actualValue" from ListA to "actualValue" of Class Yellow
}
....等等。
我尝试过使用.filter() 和.map(),但是我不确定如何在过滤器中使用条件并进行不同的映射。
有人可以帮忙吗。
【问题讨论】:
-
所以你有一个
A对象的列表,并且你想通过它进行流式传输,并获取B的actualValue属性并将其设置为A的@ 987654331@ 对吗?但是没有一个字段是static,所以每个对象actualValue可以不同。您想从哪个对象中获取actualValue? -
在将它们映射到不同的对象之后,您的最终意图是什么?您想对它们做什么,将它们存储在不同的绿色、黄色等列表中?
-
好的,遍历它们并使用转换器方法映射它们。旁白:在目前的情况下,不同颜色类别的存在没有多大意义。您可以简单地拥有一个
class Color {private Integer actualValue; private Integer expectedValue;},然后在 B 中将其用作public class B { private Color green; private Color yellow; private Color red; },这将需要一个转换器来转换这些值,并且在将它们设置为属性时,您可以根据color值匹配它. -
为什么会有多个具有相同结构的类?此外,这些都没有任何意义。
-
如果你有 3 个
As,你为什么要流过它们?只需按程序进行即可。
标签: java java-8 mapping java-stream