Вам необходимо выполнить поиск методом грубой силы:
static <T> List<Integer> indexesOf(List<T> source, T target)
{
final List<Integer> indexes = new ArrayList<Integer>();
for (int i = 0; i < source.size(); i++) {
if (source.get(i).equals(target)) { indexes.add(i); }
}
return indexes;
}
Обратите внимание, что это не обязательно самый эффективный подход. В зависимости от контекста и типов / размеров списков, вам может потребоваться провести серьезную оптимизацию. Дело в том, что если вам нужен каждый индекс (и вы ничего не знаете о структуре содержимого списка), то вам нужно сделать смертельный марш для каждого элемента по лучшей цене O (n).
В зависимости от типа базового списка, get(i)
может быть O (1) (ArrayList
) или O (n) (LinkedList
), поэтому это МОЖЕТ взорваться до O (n 2 ) реализация. Вы можете скопировать в ArrayList
или вручную увеличить счетчик индекса LinkedList
.