【问题标题】:Return a key-value list, key is attribute and value is attribute's value from other Class返回一个键值列表,键是属性,值是其他类的属性值
【发布时间】:2016-05-18 18:54:10
【问题描述】:

我有一个具有namevalue 属性的类A

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 键,其中值是来自BgetAttribute01(),例如({attribute01, getAttribute01()},{attribute02, getAttribute02()})

如何实现它?

提前致谢。

【问题讨论】:

  • 你的键值列表在哪里?
  • 而不是列表,你应该使用地图。你的程序只需要使用列表吗?
  • 你的意思是键是字符串"atribute01"?
  • 感谢回复,list 既然定义了,就需要,key-value 列表应该是 ((attribute01, getAttribute01()), (attribute02, getAttribute02()), (attribute03, getAttribute03() ) ... )
  • 这不仅仅关乎效率。这也是设计和代码质量的问题。通常“在定义的结构上工作”似乎更便宜;但问题是:当你在糟糕的基础上建造时,那么你在此之上建造的一切……也注定是“糟糕的”。到目前为止,您展示的内容看起来很漂亮……不太好。

标签: java list key-value


【解决方案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; 
}

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

【讨论】:

  • 您想回答自己的问题吗?如果不;如前所述:更新你的问题。
【解决方案2】:

我为 List 编写了示例代码。请检查我的代码是否可以使用。我在 C 中添加了另一个额外的类 C,它有两个属性 String nameFromA 和 String attFromB。你应该将此 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);

    }


}

这只是我的意见。请检查是否可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多