Java,替换列表中的值

时间:2017-07-10 20:07:55

标签: java list

我有以下问题。我想用一个方法获取一个列表,在该列表中找到一个值并将其替换为另一个。

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循环,它可以更干净地完成。有人能告诉我怎么样?

4 个答案:

答案 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);