Если вы имеете в виду, не используя Iterator
, то ответ - Да. Например:
for (int i = 0; i < list.size(); ) {
MyElement element = list.get(i);
if (element.getMyProperty()) {
list.remove(i);
} else {
i++;
}
}
В зависимости от реализации List
, это может быть более дорогим способом реализации фильтрации, чем использование Iterator
и Iterator.remove()
. (Например, если list равен LinkedList
, то list.get(i)
и list.remove(i)
оба равны O(N)
, и, следовательно, фильтрация списка равна O(N^2)
. В отличие от этого, фильтрация того же списка с Iterator
будет O(N)
.)
Однако, если вы спрашиваете, можете ли вы отфильтровать свой список, не проверяя каждый элемент в списке, тогда ответ - Нет. Вам потребуется некоторая вторичная структура данных или список, который нужно упорядочить по свойству, чтобы добиться лучшего чем O(N)
фильтрация.