java int [] arrays - 需要将所有值从1更改为0

时间:2017-06-14 10:57:43

标签: java arrays replace

例如,如果我们有一个数组:

 2 5 1 32 0 3 3 2 11 1

将所有1改为0的最佳方式是什么?

结果应该是:

2 5 0 32 0 3 3 2 11 0

我能想到的只是运行循环并在满足条件时替换。

是否有内置的java函数?

4 个答案:

答案 0 :(得分:7)

如果这是最重要的,那么不确定你是否觉得它更具可读性,性能可能更差。

    int[] ints = { 2, 5, 1, 32, 0, 3, 3, 2, 11, 1 };
    int[] noOnes = Arrays.stream(ints).map(i -> i == 1 ? 0 : i).toArray();
    System.out.println(noOnes);

答案 1 :(得分:1)

您可以使用IntStream:

 int[] result = IntStream.of(array)
                          .map(i -> array[i] == 1 ? 0 : array[i])
                          .toArray();

答案 2 :(得分:1)

另一个替代方法是在使用replaceAll方法

创建指定数组支持的列表后,使用Collections类中的Arrays.asList()静态方法
public static void main(String[] args) {

   Integer []a = {1,2,5,1,0,5,9};
   List<Integer> li = new ArrayList<>();
   li = Arrays.asList(a);
   Collections.replaceAll(li, 1, 0);
   for (int i: a)
      System.out.println(i);
}

这会打印出以下结果: 0 2 五 0 0 五 9

答案 3 :(得分:0)

直截了当的for循环是最佳方式。