ArrayList 조건 삭제 'removeIf'

최지혜·2022년 12월 6일
0

java

목록 보기
32/33

[Java] ArrayList 조건 삭제 'removeIf'

arrayList 경우 내가 삭제하고 싶은 애를 삭제하고 싶은 경우
for문을 돌리고, if문을 통해 삭제하는 경우가 있었다.

하지만 자바8부터 생긴 removeIf를 사용하면 람다식을 이용하여 간단하게 삭제할 수 있다.

자바8에 생긴 람다 중 Predicate 를 사용하여 list에서 원하는 애를 삭제하는 방식을 이용하고 있다.

이는 stream에 있는 filter랑 같은 원리이다.

  • 리턴 값은 boolean으로 하나라도 삭제가 되면 true, 삭제가 없으면 false를 반환한다.
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]
profile
매일 성장하는 개발자

0개의 댓글