Страницы

Поиск по вопросам

пятница, 28 февраля 2020 г.

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

#java #циклы #foreach


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

for (String str: array) {

}


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


Ответы

Ответ 1



Для работы с индексами стоит использовать обычный цикл for Если "очень хочется", то при условии уникальности элементов массива можно воспользоваться поиском элемента в массиве. Однако этот подход получается всецело хуже обычного for-а: работает за O(n^2), что при большом количестве элементов может создать проблемы с производительностью требует уникальности элементов массива код получается больше и сложнее Так что этот подход можно рассматривать только для полноты картины: List 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

Ответ 2



В Kotlin у коллекций и массивов есть метод forEachIndexed: list.forEachIndexed { element, index -> }

Комментариев нет:

Отправить комментарий