#java #циклы #foreach
Есть ли возможность в java получить индекс элемента коллекции в цикле foreach? for (String str: array) { } То есть узнать индекс текущего элемента в теле цикла
Ответы
Ответ 1
Для работы с индексами стоит использовать обычный цикл for Если "очень хочется", то при условии уникальности элементов массива можно воспользоваться поиском элемента в массиве. Однако этот подход получается всецело хуже обычного for-а: работает за O(n^2), что при большом количестве элементов может создать проблемы с производительностью требует уникальности элементов массива код получается больше и сложнее Так что этот подход можно рассматривать только для полноты картины: Listlist = 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 -> }
Комментариев нет:
Отправить комментарий