2014-12-04 5 views
-2

Я в тупике с этим и надеюсь, что это может быть хорошим способом решить мою проблему.Сеттер для пары ключевых значений Объект списка

Сначала объясню, как работает программа.

У меня есть класс, который является просто парой ключей значения:

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 и заселить его с ключевыми парами значений и обзором нового списка (КВП).

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 и заполнил обновленным значением для пары ключей, но тогда, хотя должен быть лучший метод, возможно, для этого нужно создать обновление или метод setter в объекте List.

Что лучше было бы создать новый объект или обновить? Я думаю, что обновление значения в паре значений ключей, однако, я не уверен, как это сделать.

Любая помощь или предложения были бы весьма признательны.

+0

Используйте вместо этого 'Map '. Если у вас может быть несколько значений для одного ключа, используйте «Map >» или «MultiMap » из Guava. –

+0

Просто одно значение для определенного ключа, но мне просто нужно обновить это значение до другого. – user1158745

+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.

+0

lol. Я просто понял, что могу это сделать. У меня была голова. – user1158745

+0

По какой-то причине я искал класс myList, который я создал, а не класс KVP. – user1158745

0

Lose окончательный модификатор и создать хорошие методы получения и установки для полей

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() + "+"); 
     } 
    } 
0

Просто добавив сеттер в мое ключевое значение, парный класс разрешил эту проблему. Не слишком уверен, почему я этого раньше не видел, по какой-то причине я думал, что мне нужно сделать это в классе myList.

public void setValue (String newValue){ 
    value = newValue; 
} 
Смежные вопросы