用 1,2...n 填充数组的最短方法

新手上路,请多包涵

在 Java 中有这么快的东西吗? (编码速度快)

 int [] a = {1..99};

或者我必须这样做:

 int [] a=new int[100];
for (int i=0;i <100;++i){
a[i]=i;
}

原文由 C graphics 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 317
2 个回答

出于好奇,我测试了该方法的两个版本的性能——一个使用循环,另一个使用番石榴:

 public int[] loop() {
    int[] a = new int[100];
    for (int i = 0; i < 100; ++i) {
        a[i] = i;
    }
    return a;
}

public int[] guava() {
    Set<Integer> set = ContiguousSet.create(Range.closed(0, 99), DiscreteDomains.integers());
    int[] a = Ints.toArray(set);
    return a;
}

以下是结果:

 Benchmark     Mean     Mean error          Var    Units
loop        79.913          5.671       30.447  nsec/op
guava      814.753         46.359     2034.726  nsec/op

因此, guava() 方法运行时间为 814 ns +/- 46ns,而 loop() 方法运行时间为 80 ns +/- 5ns。所以 loop() 大约快 10 倍。如果你多次调用该方法,800 纳秒并不重要,如果你经常调用它,编写循环可能会更好。

原文由 assylias 发布,翻译遵循 CC BY-SA 4.0 许可协议

Java 8 开始,这是可能的:

 int[] a = IntStream.range(1, 100).toArray();

(并且比其他 Java 8 答案更短。)。

原文由 Bachi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题