это из-за "Список list "в параметрах метода?
Нет.
Это потому, что вы передаете List
, который не поддерживает операцию remove
. Это необязательная операция .
Кроме того, если вы не получили UnsupportedOperationException
, вы, скорее всего, получите ConcurrentModificationException
, потому что вы удаляете из List
, что вы итерация.
Более простой и правильный способ (на List
, который поддерживает удаление):
list.removeIf(s -> s.getAge() > 60);
Если вам нужно что-то сделать с удаляемым элементом, используйте an Iterator
:
Iterator<? extends Student> it = list.iterator();
while (it.hasNext()) {
Student s = it.next();
if (s.getAge() > 60) {
s.remove();
// Do whatever.
}
}
Однако имейте в виду, что удаление из середины списков (например, ArrayList
) в al oop неэффективно.