迭代可变长度的Java数组

如何迭代可变长度的Java数组。

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

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

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

 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循环(即使你知道大小的可变长度数组......每次都只是不同)。

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

 for(int i=0; i 

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

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

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

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

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

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

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

 import java.util.ArrayList; public class VariableArrayLengthLoop { public static void main(String[] args) { //create new ArrayList ArrayList aListFruits = new ArrayList(); //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 "); } } } }