Java - 使用for循环创建数组

3

在Java中是否可以以类似这样的方式创建数组,我已经搜索了一段时间,但没有找到任何东西。

int[] foo = {
    for(String arg:args)
        return Integer.parseInt(arg);
};
6个回答

3
不可以,但你可以选择以下替代方案:
int[] foo = new int[args.length];
for(int i = 0; i < foo.length; i++) {
    foo[i] = Integer.parseInt(args[i]);
}

我写了相同的答案。抱歉,我不知道你已经发表了它。可能是我当时正在写。 - Apurva
@Clutchy 不用谢(看起来你刚好获得了足够的声望来投票 :)) - Eran
我之前在学Python,现在用Java感觉所有东西都好长啊 :P - Clutchy

2
不完全是,但尝试这个。
int[] foo = new int[args.length]; //Allocate the memory for foo first.
for (int i = 0; i < args.length; ++i)
    foo[i] = Integer.parseInt(args[i]);
//One by one parse each element of the array.

2

使用Java 8,可以这样实现:

int[] foo = Stream.of(args).mapToInt(str -> Integer.parseInt(str)).toArray();

2

有点像...自Java 8以来,我们拥有了流(Stream)功能,可以模拟循环并允许我们执行以下操作:

int[] arr = Arrays.stream(args).mapToInt(s -> Integer.parseInt(s)).toArray();

或者使用方法引用等价物

int[] arr = Arrays.stream(args).mapToInt(Integer::parseInt).toArray();

1
int[] foo = new int[arg.length];
for (int i =0;i<args.length;i++) foo[i]=Integer.parseInt(args[i]);

这是唯一的方法吗? - Clutchy

1

虽然没有数组编号,但您可以使用List来实现类似效果:

final String args[] = {"123", "456", "789"};

List<Integer> list = new LinkedList<Integer>(){
    {
        for (String arg: args){
            add(Integer.parseInt(arg));
        }
    }
};

System.out.println(list); // [123, 456, 789]

使用数组,你需要执行以下操作:
int[] foo = new int[args.length];
for (int i = 0; i < foo.length; i ++) {
    foo[i] = Integer.parseInt(args[i]);
}

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