Получить индекс элемента в foreach цикле

206
25 января 2019, 23:30

Есть ли возможность в java получить индекс элемента коллекции в цикле foreach?

for (String str: array) {
}

То есть узнать индекс текущего элемента в теле цикла

Answer 1

Для работы с индексами стоит использовать обычный цикл for

Если "очень хочется", то при условии уникальности элементов массива можно воспользоваться поиском элемента в массиве. Однако этот подход получается всецело хуже обычного for-а:

  • работает за O(n^2), что при большом количестве элементов может создать проблемы с производительностью
  • требует уникальности элементов массива
  • код получается больше и сложнее

Так что этот подход можно рассматривать только для полноты картины:

List<String> list = Arrays.asList(array);
for (String str : array)
{
    int index = list.indexOf(str);
    ...
}

Вместо метода List.indexOf можно воспользоваться методом ArrayUtils.indexOf из библиотеки Apache Commons Lang, но суть от этого не меняется - только кода становится чуть меньше

Можно ещё использовать дополнительную переменную:

int index = 0;
for (String str : array)
{
    ...
    index++;
}

но это уже получается почти что обычный for

Answer 2

В Kotlin у коллекций и массивов есть метод forEachIndexed:

list.forEachIndexed { element, index -> 
}
READ ALSO
Книги и учебные ресурсы по Android

Книги и учебные ресурсы по Android

Давайте соберем подборку хорошей литературы и ресурсов (для разработчиков с разным уровнем владения материалом) по ОС Android (архитектура,...

189
java - Синхронизация потоков

java - Синхронизация потоков

Имеются два блока кода назовем их А и ВОни в различных классах и пакетах кода и в принципе никак не взаимосвязаны

194
Переместить объект в конец массива, у которого определенная переменная равна 0

Переместить объект в конец массива, у которого определенная переменная равна 0

Существует массив объектовДля него необходимо совершить сортировку по возрастанию(по переменной getId) + к этому, если getId=0, то необходимо объект...

178
В приложение поставить свою карту с google maps

В приложение поставить свою карту с google maps

Как в приложение написанное на Android Studio поставить свою карту с Google Maps(Свои места) Нашел, что можно сделать это импортом KML файла, но не понимаю...

188