如何在Java中遍历数组元素?

5
在Bash中,如果我想按照给定的顺序迭代数组元素,可以像这样操作:
    for i in 1 3 8 2 5 9; do
        array[i] = <some_algorithm_based_value>
    done

在Java中是否有可能做到同样的事情(或者相对于同样的事情)?

5个回答

6

你可以编写

for (int i: Arrays.asList(1, 3, 8, 2, 5, 9)) {
    doSomethingWith(array[i]);
}

补充说明: 现场演示


3
你可以尝试这个。
  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

1
是的,你可以这样做。
    for (int i : new Integer[]{1, 3, 8, 2, 5, 9}) {
        // do something
    }

使用new int[]比使用new Integer[]更好,因为它避免了在Integer对象和int原始类型之间进行装箱和拆箱的操作。 - M. Justin

1
你可以做到这一点:

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

0
这是一个简单的映射,将一组值映射到应用函数后的结果。基于stream的方法可以解决这个问题。
int[] array = IntStream.of(1, 3, 8, 2, 5, 9).map(i -> algorithm(i)).toArray();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接