如何从数组的所有元素中减去一个常量值?

我有一个数组,例如我想从数组的所有元素中减去 7。除了下面的逻辑,我怎么能做到这一点。


for (int i = 0; i < array.length; i++)

{

    array[i]-=7;

}

任何相关的流都会有所帮助。


编辑 - 它不应该是一个数组。它也可以是一个 ArrayList。


HUH函数
浏览 729回答 3
3回答

一只斗牛犬

对于流,您可以map像这样使用:int[] array = {-1, 8, 9};array = Arrays.stream(array)&nbsp; &nbsp; &nbsp; &nbsp; .map(i -> i - 7)&nbsp; &nbsp; &nbsp; &nbsp; .toArray();或者,如果您使用的是 List,则可以使用:List<Integer> array = new ArrayList<>(Arrays.asList(-1, 8, 9));array = array.stream()&nbsp; &nbsp; &nbsp; &nbsp; .map(i -> i - 7)&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());

jeck猫

虽然流可能看起来“新而酷”,但您应该记住实际发生的事情。编码:array = Arrays.stream(array)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.map(i -> i - 7)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.toArray();实际上运行这样的东西(但更糟......):int[] newArray = new int[array.length];for (int i = 0; i < array.length; i++) {&nbsp; &nbsp; &nbsp;newArray[i] = array[i]-7;}array = newArray;所以你可以很容易地看到它与你自己的代码相比效率有多低。并不是说它不起作用,但请记住。如果它是一个数组列表,你可以使用 lst.set(i, lst.get(i) - 7),顺便说一句......

天涯尽头无女友

流应该是无副作用的,因此流不是修改数组或列表内容的好选择。不过,类似的事情是可能的。第ArrayList一个。我认为这是一个很好的方式(然后for循环也很好):&nbsp; &nbsp; List<Integer> list = new ArrayList<>(List.of(11,&nbsp; 14, 9, 13));&nbsp; &nbsp; list.replaceAll(e -> e - 7);&nbsp; &nbsp; System.out.println(list);[4, 7, 2, 6]该replaceAll方法是在 Java 8 中引入的。我不认为存在一个很好的int数组解决方案。你可能会这样做:&nbsp; &nbsp; int[] array = { 11,&nbsp; 14, 9, 13 };&nbsp; &nbsp; Arrays.setAll(array, ix -> array[ix] - 7);&nbsp; &nbsp; System.out.println(Arrays.toString(array));[4, 7, 2, 6]我觉得阅读起来既不自然也不容易,我更喜欢for循环。如果您碰巧有一个非 null 数组Integer,则可以通过Arrays.asList以下方式使用上述第一种方法:&nbsp; &nbsp; Integer[] array = { 11,&nbsp; 14, 9, 13 };&nbsp; &nbsp; Arrays.asList(array).replaceAll(e -> e - 7);&nbsp; &nbsp; System.out.println(Arrays.toString(array));[4, 7, 2, 6]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java