【发布时间】:2014-12-05 00:32:10
【问题描述】:
我被这个难住了,希望看看这是否是解决我的问题的好方法。
我先解释一下程序是如何工作的。
我有一个简单的键值对类:
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 方法来执行此操作。
创建新对象或更新哪个更好?我会考虑更新键值对中的值,但是,我不确定如何执行此操作。
任何帮助或建议将不胜感激。
【问题讨论】:
-
改用
Map<String, String>。如果单个键可以有多个值,请使用 Guava 中的Map<String, List<String>>或MultiMap<String, String>。 -
对于特定键只有一个值,但我只需将该值更新为不同的值。
-
你会反对地图
吗? -
您始终可以使用
Map#put(oldKey, newValue),它比使用List<CustomKeyValuePairClass>更快
标签: java list object keyvaluepair