我希望将某个类的所有属性转换为特定格式的字符串,并将它们与它们之间的换行符连接起来。我知道我可以迭代列表,将元素的属性转换为String等...但我认为应该有一个更好的方法来实现我的目标,使用流和lambda,我只是无法弄清楚如何。如果不可能,请告诉我。
给出以下类:
public class LambdaTest {
public LambdaTest(String a, int b) {
setAttributeA(a);
setAttributeB(b);
}
private String attributeA;
private int attributeB;
public String getAttributeA() {
return attributeA;
}
public void setAttributeA(String attributeA) {
this.attributeA = attributeA;
}
public int getAttributeB() {
return attributeB;
}
public void setAttributeB(int attributeB) {
this.attributeB = attributeB;
}
}
我正在寻找一种很好的方法来转换列表,以便为以下对象返回类似这样的String:
LambdaTest lambdaTest1 = new LambdaTest("a", 1);
LambdaTest lambdaTest2 = new LambdaTest("b", 2);
List<LambdaTest> lambdaTests = Arrays.asList(new LambdaTest[] {lambdaTest1, lambdaTest2});
这样
"Lambda: A: a, B: 1 \nLambda: A: b, B: 2".equals(lambdaTests.magicLmabdaTransformation())
答案 0 :(得分:4)
您可以将对象映射到字符串并加入with Collectors::joining
:
String result = lambdaTests.stream()
.map(l -> "Lambda: A: " + l.getA() + ", B: " + l.getB())
.collect(Collectors.joining("\n"));
在toString
方法中定义字符串转换可能是有意义的。