在Bash中,如果我想按照给定的顺序迭代数组元素,可以像这样操作:
for i in 1 3 8 2 5 9; do
array[i] = <some_algorithm_based_value>
done
在Java中是否有可能做到同样的事情(或者相对于同样的事情)?
int[] arr= new int[]{1, 3, 8, 2, 5, 9};
for(int i:arr){
System.out.println(i);
}
1
3
8
2
5
9
现场演示在这里
顺便说一下:这只能在jdk 1.7中工作,因为早期版本的jdk无法为每个原始类型设置一个。
因此,如果您使用早期版本的Java,则必须将int[]
转换为Integer[]
您可以尝试这个
int[] arr= new int[]{1, 3, 8, 2, 5, 9};
Integer[] str=new Integer[arr.length];
for(int i=0;i<arr.length;i++){
str[i]=arr[i];
}
for(Integer i:arr){
System.out.println(i);
}
1
3
8
2
5
9
for (int i : new Integer[]{1, 3, 8, 2, 5, 9}) {
// do something
}
package com.sandbox;
import java.util.Arrays;
public class Sandbox {
public static void main(String[] args) {
for (Integer integer : Arrays.asList(1, 2, 3, 4, 5)) {
System.out.println(integer);
}
}
}
1
2
3
4
5
int[] array = IntStream.of(1, 3, 8, 2, 5, 9).map(i -> algorithm(i)).toArray();
new int[]
比使用new Integer[]
更好,因为它避免了在Integer
对象和int
原始类型之间进行装箱和拆箱的操作。 - M. Justin