【问题标题】:Iterating through a variable length array遍历可变长度数组
【发布时间】:2011-01-20 20:25:04
【问题描述】:

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

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

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

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

【问题讨论】:

  • 推荐使用 for 循环,因为您知道执行何时结束

标签: java arrays iteration


【解决方案1】:
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 循环(即使使用可变长度数组,您也知道大小……只是每次都不同)。

【讨论】:

    【解决方案2】:

    数组有一个隐含的成员变量来保存长度:

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

    或者,如果使用 >=java5,则使用 for each 循环:

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

    【讨论】:

      【解决方案3】:

      您在问题中特别提到了“可变长度数组”,因此现有的两个答案(在我写这篇文章时)都不是很正确。

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

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

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

      【讨论】:

        【解决方案4】:

        这里是一个例子,在循环执行期间数组的长度发生了变化

        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 "); 
                        }
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-23
          • 1970-01-01
          • 2016-02-23
          • 2015-02-21
          • 2020-11-20
          • 2020-03-20
          • 1970-01-01
          相关资源
          最近更新 更多