例如,如果我们有一个数组:
2 5 1 32 0 3 3 2 11 1
将所有1改为0的最佳方式是什么?
结果应该是:
2 5 0 32 0 3 3 2 11 0
我能想到的只是运行循环并在满足条件时替换。
是否有内置的java函数?
答案 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
循环是最佳方式。