不能使用下标删元素,因为下标是动态分配的
使用迭代器
@Test
public void test3() {
List<Tt> l = new ArrayList<>();
l.add(new Tt("a", 2, 3.33));
l.add(new Tt("b", 3, 3.33));
l.add(new Tt("c", 4, 3.33));
Iterator<Tt> iterator = l.iterator();
while (iterator.hasNext()) {
Tt next = iterator.next();
if (next.getPeriod() == 3 ) {
iterator.remove();
}
}
System.out.println(l);
}
使用原生方法
@Test
public void test3() {
List<Tt> l = new ArrayList<>();
l.add(new Tt("a", 2, 3.33));
l.add(new Tt("b", 3, 3.33));
l.add(new Tt("c", 4, 3.33));
l.removeIf( it -> it.getPeriod() == 2);
System.out.println(l);
}
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}