Итерация через массив Java переменной длины
Как выполнить итерацию по массиву Java переменной длины.
Думаю, я бы установил цикл while, но как бы я обнаружил, что достиг конца массива.
Я думаю, мне нужно что-то вроде этого [просто нужно выяснить, как представить myArray.notEndofArray()]
index = 0;
while(myArray.notEndofArray()){
system.out.println(myArray(index));
index++;
}
Ответы
Ответ 1
for(int i = 0; i < array.length; i++)
{
System.out.println(array[i]);
}
или
for(String value : array)
{
System.out.println(value);
}
Вторая версия представляет собой цикл "для каждого" и работает с массивами и коллекциями. Большинство циклов можно выполнить с помощью цикла 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(Object o : myArray) {
System.out.println(o);
}
Ответ 3
Вы специально упоминали "массив переменной длины" в своем вопросе, поэтому ни один из существующих двух ответов (как я это пишу) совершенно прав.
В Java нет понятия "массив переменной длины", но в нем есть Коллекции, которые служат в этом качестве. Любая коллекция (технически любая "Итерируемая", супертип Коллекций) может быть зациклирована так же просто, как это:
Collection<Thing> things = ...;
for (Thing t : things) {
System.out.println(t);
}
EDIT: Возможно, я неправильно понял, что он имел в виду под "переменной длиной". Возможно, он имел в виду только фиксированную длину, но не каждый экземпляр имеет ту же фиксированную длину. В этом случае существующие ответы будут в порядке. Я не уверен, что имел в виду.
Ответ 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 ");
}
}
}
}