【问题标题】:Which is the correct way to represent an entire array within a for loop?在 for 循环中表示整个数组的正确方法是什么?
【发布时间】:2015-03-03 17:43:53
【问题描述】:

例如,假设我创建了一个单维数组并将数组初始化为 100。如果我希望能够使用数组的所有值,比如在 for 循环中,我该怎么做?我在下面找到了两种方法,但我不确定推荐哪种方法。也有什么不同吗?

int[] list = new int[100];
for (int i = 0; i < list.length; i++) 

for (int i = 0; i < 100; i++) 

这两种语法哪一种更常用?

【问题讨论】:

  • 第一个更好。附带说明一下,您应该定义和使用具有信息名称的常量,而不是使用 神奇的数字 声明一个新数组,即:final int LIST_SIZE = 100; 然后int[] list = new int[LIST_SIZE];

标签: java arrays for-loop


【解决方案1】:

这样更好:

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

如果您改变主意,决定将列表长度改为 150,那么您的其余代码仍然可以工作。

如果您完全更改数组的长度,则另一个选项要求您更改所有 for 循环。

实际上并没有任何其他差异。

编辑:正如his answer 中提到的Manoj Sharma,您还可以做另一件事:

for (int myInt : list)

这将为您完成迭代,但您无法在循环中获取索引。

为了完整起见,我提到这一点,但如果你觉得这有帮助,请为他的回答点赞!

【讨论】:

【解决方案2】:

for (int i = 0; i &lt; list.length; i++)是动态条件处理,会根据你的数组长度变化。

for (int i = 0; i &lt; 100; i++)是静态条件处理,如果你有数千个for循环,你需要改变每个循环条件。

请确保避免在应用程序中进行硬编码。

【讨论】:

    【解决方案3】:

    @Anubian Noob 给出的答案很好。但是 java5 以后的 java 为每个循环提供了增强,这比其他循环要好得多。这种方法甚至没有出错的机会。往下看:

    for(int i: list){
    System.out.println(i);
    }
    

    这将遍历整个数组并显示数组中的所有元素存储。你也可以将这种方法用于多维数组。

    【讨论】:

    • 但缺点是您无法在循环中获取索引,如果您需要它可能会很烦人。不过值得一提。
    • 这取决于条件,我们也有 while 和 do while 循环。在某些情况下,while 循环比 for 循环更好。同样,如果您不想要索引号,您只想要最快且有效且没有错误证明结构,那么请使用增强的 for 循环而不是简单的 for 循环。
    • 是的,这取决于您的应用程序。这更清洁、更易于使用,但也有一些折衷。
    【解决方案4】:

    最好将数组的长度存储在一个变量中,然后使用它。而不是在循环中硬编码或在每次循环运行时找到它。

    var arraySize = yourArray.length;
    
    for(i;i<arraySize; i++){
    //your code here.
    }
    

    【讨论】:

    • 为什么更好?根据我尝试对其进行基准测试时的经验,它几乎没有更快。平均只有 1%。但我没有做太多。
    【解决方案5】:

    在 Java 8 中,学习使用流会更好。它们更直观,您无需担心大小之类的问题。

    例如:

    int list[] = {4, 7, 3, 9, 11};
    Arrays.stream(list)...
    

    在这种情况下,Arrays.stream 知道您已经创建了一个 IntStream,因此您可以获得 max、min、sorted、sum 等。

    现在你需要 for 循环的频率大大降低了。

    【讨论】:

      猜你喜欢
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      相关资源
      最近更新 更多