我有以下问题。我想用一个方法获取一个列表,在该列表中找到一个值并将其替换为另一个。
void replaceAll( ArrayList<Integer> arr, Integer toFind, Integer replacement) {
int indexOfArray = arr.indexOf(toFind);
if(arr.contains(toFind)) {
for(int x = 0; x < arr.size(); x++) {
if (arr.contains(toFind)) {
arr.remove(toFind);
arr.add(indexOfArray, replacement);
}
}
}
}
这是我为自己制定的解决方案,它肯定有效。但是,我认为如果不使用for循环,它可以更干净地完成。有人能告诉我怎么样?
答案 0 :(得分:4)
有一种内置方法可以完成此操作:
onSpaceBar() {
if(standing) {
\\ perform jump
standing = false;
}
}
答案 1 :(得分:2)
如果您使用具有lambda所有功能的Java 8,只需执行:
void
replaceAll (ArrayList<Integer> list, Integer i1, Integer i2)
{
list.replaceAll ((x) => (x.equals (i1) ? i2 : x));
}
您可能还想了解java.util.stream.Stream
答案 2 :(得分:1)
如果您想使用ListIterator
:
ListIterator<Integer> it = list.listIterator();
while (it.hasNext()) {
if (it.next().equals(toFind)) {
it.set(replacement);
}
}
对于ArrayList
,这与按索引获取/设置元素没有什么不同;但对于非RandomAccess
列表,通常效率更高,例如如果您想将其应用于LinkedList
。
答案 3 :(得分:0)
我会使用两个List
方法indexOf
来获取要替换的元素的索引,并使用set
将旧元素替换为新元素:
ArrayList<String> list = new ArrayList<String>();
String newString = null, oldString = null;
list.set(list.indexOf(oldString), newString);