返回键值列表,键是属性,值是来自其他类的属性值

时间:2016-05-18 10:30:26

标签: java list key-value

我有一个A类,namevalue属性。

public class A {
    private String name;
    private String value;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

我有另一个B级,例如

public class B {
    private String attribute01;
    private String attribute01;
    private String attribute01;

    public String getAttribute01() {
        return attribute01;
    }
    public void setAttribute01(String name) {
        this.attribute01 = name;
    }
    ...
}

我想返回一个A类型的列表,其中包含attribute01密钥,getAttribute01()的值为B,例如({attribute01, getAttribute01()},{attribute02, getAttribute02()})

如何实施?

提前致谢。

2 个答案:

答案 0 :(得分:1)

实际上我可以使用非常愚蠢的方式,例如

public List<A> keyvalueList(final B objB) {
List<A> list = new ArrayList<>();

A objA = new A();
objA.setName("attribute01");
objA.setValue(objB.getAttribute01());
list.add(objA);

objA = new A();
objA.setName("attribute02");
objA.setValue(objB.getAttribute02());
list.add(objA);

...

return list; 
}

其中一部分是硬编码,显然它不是一种聪明的方式,任何提议。

答案 1 :(得分:0)

我为List编写了示例代码。请检查我的代码是否可以使用。我添加了另外一个类C.in C,它有两个属性String nameFromA和String attFromB.You应该将此C对象添加到列表中以下是示例代码。

public class A {
    private String name;
    private String value;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }

}
public class B {
    private String att1;
    private String att2;
    private String att3;
    public String getAtt1() {
        return att1;
    }
    public void setAtt1(String att1) {
        this.att1 = att1;
    }
    public String getAtt2() {
        return att2;
    }
    public void setAtt2(String att2) {
        this.att2 = att2;
    }
    public String getAtt3() {
        return att3;
    }
    public void setAtt3(String att3) {
        this.att3 = att3;
    }


}

public class C {
    private String namefromA;
    private String attfromB;
    public String getNamefromA() {
        return namefromA;
    }
    public void setNamefromA(String namefromA) {
        this.namefromA = namefromA;
    }
    public String getAttfromB() {
        return attfromB;
    }
    public void setAttfromB(String attfromB) {
        this.attfromB = attfromB;
    }
}

    public class Test {

        public static void main(String args[]){
            C c = new C();
            A a = new A();
            B b = new B();
            a.setName("A1");
            b.setAtt1("100");
            c.setNamefromA(a.getName());
            c.setAttfromB(b.getAtt1()); 
List list = new ArrayList();
//use generic 
list.add(c);

        }

    }

如果您不想使用C类,那么您可以像这样使用Test类

import java.util.ArrayList;
import java.util.List;

public class Test {
    private String nameFromA;
    private String valueFromB;


    public Test(String nameFromA, String valueFromB) {
        super();
        this.nameFromA = nameFromA;
        this.valueFromB = valueFromB;
    }
    public static void main(String args[]){

        A a = new A();
        B b = new B();
        a.setName("A1");
        b.setAtt1("100");
        Test test = new Test(a.getName(),b.getAtt1());
        List list = new ArrayList();
        list.add(test);

    }


}

这只是我的意见。请检查是否正常。