我有两个ArrayLists
。如下例所示。
ArrayList<String> listVarName = new ArrayList<String>();
ArrayList<String> listVarValue = new ArrayList<String>();
listVarName.add("One");
listVarName.add("Two");
listVarName.add("Three");
listVarName.add("Four");
listVarValue.add("Content of One");
listVarValue.add("Content of Two");
listVarValue.add("Content of Three");
listVarValue.add("Content of Four");
//Code to append the value
int index = listVarName.indexOf("Two");
String oldVal = listVarValue.get(index);
listVarValue.remove(index);
listVarValue.add(index, oldVal+" APPENDED TEXT");
System.out.println(listVarName.toString());
System.out.println(listVarValue.toString());
输出在追加之前:
[One, Two, Three, Four]
[Content of One, Content of Two, Content of Three, Content of Four]
追加后的输出:
[One, Two, Three, Four]
[Content of One, Content of Two APPENDED TEXT, Content of Three, Content of Four]
在上面的代码 listVarName 是 key 而 listVarValue 是 value 。
所以我试图追加 listVarValue
,其索引与listVarName
的索引相匹配。所以我得到listVarValue
的旧值并为其添加新值,然后从列表中删除旧值并将新值插入其旧位置。
以上代码工作正常。我的问题是,有没有更好的方法,而不是我用来附加值的代码?
答案 0 :(得分:2)
您也可以使用Map<String,String>
代替2 ArrayList
。最后,您可以通过调用keySet()
和values()
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("one", "Content of One");
map.put("Two", "Content of Two");
map.put("Three", "Content of Three");
map.put("Four", "Content of Four");
map.put("Two", map.get("Two") + " APPEND TEXT");
System.out.println(map.values());
答案 1 :(得分:1)
假设你关注列表修改而不是一般结构,是的 - 有更好的方法。
,而不是使用remove
然后使用add
String oldVal = listVarValue.get(index);
listVarValue.set(index, oldVal + " APPENDED TEXT");
除了更简单的代码之外,这也更有效 - 在ArrayList
中添加和删除每个都涉及将支持数组中所有其余元素复制到新位置 - 而set
只是涉及更改后备阵列中的单个元素。
答案 2 :(得分:1)
而不是这两行
listVarValue.remove(index);
listVarValue.add(index, oldVal+" APPENDED TEXT");
您可以使用
listVarValue.set(index,oldVal+" APPENDED TEXT")