Java, Как получить текущий индекс/ключ в цикле "для каждого"
В Java, как мне получить текущий индекс для элемента в Java?
for (Element song: question){
song.currentIndex(); //<<want the current index.
}
В PHP вы можете сделать это:
foreach ($arr as $index => $value) {
echo "Key: $index; Value: $value";
}
Ответы
Ответ 1
Вы не можете, вам нужно либо сохранить индекс отдельно:
int index = 0;
for(Element song : question) {
System.out.println("Current index is: " + (index++));
}
или используйте обычный цикл:
for(int i = 0; i < question.length; i++) {
System.out.println("Current index is: " + i);
}
Причина заключается в том, что вы можете использовать сжатый для синтаксиса цикл для любого Iterable, и это не гарантирует, что значения фактически имеют "индекс"
Ответ 2
for (Song s: songList){
System.out.println(s + "," + songList.indexOf(s);
}
это возможно в связанном списке.
вам нужно сделать toString() в классе песни.
если вы этого не сделаете, будет распечатываться ссылка на песню.
вероятно, к вам не относится. ^ _ ^
Ответ 3
В Java вы не можете, поскольку foreach предназначался для скрыть итератор. Вы должны сделать нормальный цикл For, чтобы получить текущую итерацию.
Ответ 4
Следите за своим индексом: как это делается в Java:
int index = 0;
for (Element song: question){
// Do whatever
index++;
}
Ответ 5
Невозможно в Java.
Здесь Scala способ:
val m = List(5, 4, 2, 89)
for((el, i) <- m.zipWithIndex)
println(el +" "+ i)
Ответ 6
Как указывали другие, "невозможно напрямую".
Я предполагаю, что вы хотите какой-то индексный ключ для песни?
Просто создайте другое поле (переменную-член) в элементе. Увеличьте его при добавлении песни в коллекцию.
Ответ 7
Пример из текущего кода, с которым я работаю:
int index=-1;
for (Policy rule : rules)
{
index++;
// do stuff here
}
Позволяет вам начать с нуля с индексом нуля и приращения при его обработке.