Setter用于键值对List对象

时间:2014-12-04 16:10:18

标签: java list object keyvaluepair

我对此感到困惑,并希望看看这是否是解决我问题的好方法。

我将首先解释该程序的工作原理。

我有一个只是一个键值对的类:

   public class KeyValuePair {
   private final String name;
   private final String value;

   public KeyValuePair(String n, String v) {
    name = n;
    value = v;
}

I have another class called List that uses the key value pair.

   public class myList {

private List<KeyValuePair> myList = new ArrayList<KeyValuePair>();


public myList(List<KeyValuePair> nvp) {
    List = nvp;
}

public List<KeyValuePair> getList() {
    return myList;
}
}

因此,在我的程序中,我创建了一个List对象,并使用键值对填充它并查看新的List(kvp)。

 public myList pullData(){
 Final myList<KeyValuePair> nvp = new ArrayList<KeyValuePair>();
 List<String[]> results = getResults()

    for(String[] str : results)
    {
     KeyValuePair kvp = new KeyValuePair(str[0], str[1]);
     nvp.add(kvp)
    }
 }
 return new myList(nvp)
}

现在我遇到了需要更新每对值的情况。钥匙保持不变。

最初我创建了一个newList对象,并使用更新的密钥对值填充,但是后来应该有一个更好的方法,可能在List对象中创建更新或setter方法来执行此操作。

哪个更好创建新对象或更新?我认为更新键值对中的值,但是,我不知道如何做到这一点。

非常感谢任何帮助或建议。

3 个答案:

答案 0 :(得分:0)

然后,您可以根据需要设置键和值:

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

  public KeyValuePair(String n, String v) {
      name = n;
     value = v;
  }
  public String getName(){
     return name;
  }
  public String getValue(){
     return value;
  }

  public void setName(String n){
     name = n;
  }

  public void setValue(String v){
      value = v;
  }

}

然而,这些列表永远不会像Java中已经存在的地图那样有用。

答案 1 :(得分:0)

丢失最终修饰符并为字段创建漂亮的getter和setter

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

    public KeyValuePair(String n, String v) {
        name = n;
        value = v;
    }

    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 void update(List<KeyValuePair> pairs) {
        for (KeyValuePair kvp: pairs) {
            kvp.setValue(kvp.getValue() + "+");
        }
    }

答案 2 :(得分:0)

只需在我的键值对类中添加一个setter即可解决此问题。不太清楚为什么我之前没有看到,出于某种原因,我认为我需要在myList类中做到这一点。

public void setValue (String newValue){
    value = newValue;
}