迭代可变长度数组

时间:2010-02-25 03:52:50

标签: java arrays iteration

如何遍历可变长度的Java数组。

我想我会设置一个while循环,但是如何检测到我已到达数组的末尾。

我想我想要这样的东西[只需要弄清楚如何表示myArray.notEndofArray()]

index = 0;
while(myArray.notEndofArray()){
  system.out.println(myArray(index));
  index++;
}

4 个答案:

答案 0 :(得分:50)

for(int i = 0; i < array.length; i++)
{
    System.out.println(array[i]);
}

for(String value : array)
{
    System.out.println(value);
}

第二个版本是“for-each”循环,它适用于数组和集合。大多数循环可以使用for-each循环完成,因为您可能不关心实际索引。如果您确实关心实际索引我们的第一个版本。

为了完整起见,你可以这样做while循环:

int index = 0;

while(index < myArray.length)
{
  final String value;

  value = myArray[index];
  System.out.println(value);
  index++;
}

但是当你知道大小时你应该使用for循环而不是while循环(即使你知道大小的可变长度数组......每次都只是不同)。

答案 1 :(得分:5)

数组有一个包含长度的隐式成员变量:

for(int i=0; i<myArray.length; i++) {
    System.out.println(myArray[i]);
}

或者,如果使用&gt; = java5,则为每个循环使用a:

for(Object o : myArray) {
    System.out.println(o);
}

答案 2 :(得分:4)

你在问题​​中特别提到了一个“可变长度数组”,所以现有的两个答案都没有(正如我写的那样)是完全正确的。

Java没有任何“可变长度数组”的概念,但它确实有集合,它以此身份提供服务。任何集合(技术上任何“Iterable”,超类型的集合)都可以像这样简单地循环:

Collection<Thing> things = ...;
for (Thing t : things) {
  System.out.println(t);
}

编辑:我可能误解了'变长'的含义。他可能只是意味着它是一个固定长度,但不是每个实例都是相同的固定长度。在这种情况下,现有的答案会没问题。我不确定是什么意思。

答案 3 :(得分:1)

这是一个例子,其中在执行循环期间改变了数组的长度

import java.util.ArrayList;
public class VariableArrayLengthLoop {

public static void main(String[] args) {

    //create new ArrayList
    ArrayList<String> aListFruits = new ArrayList<String>();

    //add objects to ArrayList
    aListFruits.add("Apple");
    aListFruits.add("Banana");
    aListFruits.add("Orange");
    aListFruits.add("Strawberry");

    //iterate ArrayList using for loop
    for(int i = 0; i < aListFruits.size(); i++){

        System.out.println( aListFruits.get(i) + " i = "+i );
         if ( i == 2 ) {
                aListFruits.add("Pineapple");  
                System.out.println( "added now a Fruit to the List "); 
                }
        }
    }
}