如何将具有多个属性的对象流转换为连接字符串

时间:2016-12-12 15:20:22

标签: lambda java-8 java-stream

我希望将某个类的所有属性转换为特定格式的字符串,并将它们与它们之间的换行符连接起来。我知道我可以迭代列表,将元素的属性转换为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())

1 个答案:

答案 0 :(得分:4)

您可以将对象映射到字符串并加入with Collectors::joining

String result = lambdaTests.stream()
                           .map(l -> "Lambda: A: " + l.getA() + ", B: " + l.getB())
                           .collect(Collectors.joining("\n"));

toString方法中定义字符串转换可能是有意义的。