[Java] ArrayList 조건 삭제 'removeIf'
arrayList 경우 내가 삭제하고 싶은 애를 삭제하고 싶은 경우
for문을 돌리고, if문을 통해 삭제하는 경우가 있었다.
하지만 자바8부터 생긴 removeIf를 사용하면 람다식을 이용하여 간단하게 삭제할 수 있다.
자바8에 생긴 람다 중 Predicate 를 사용하여 list에서 원하는 애를 삭제하는 방식을 이용하고 있다.
이는 stream에 있는 filter랑 같은 원리이다.
default boolean removerIf(Predicate<? super E> filtet) {
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;
}
public static void main(String[] args) {
List<Integer> test = new ArrayList<Integer>();
test.add(1);
test.add(2);
test.add(3);
test.add(5);
test.add(7);
System.out.println(test);
test.removeIf(m -> m > 3);
System.out.println(test);
}
[1, 2, 3, 4, 5, 7]
[1, 2, 3]