본문 바로가기
개발/기타

Java List removeIf(), 안전한 List 루프 Item Remove

by 궁즉변 변즉통 통즉구 2022. 2. 15.
반응형

java List객체에서 조건에 해당하는 아이템을 list에서 제거할 때 일반적으로 생각할 수 있는게 List를 루프 돌면서 해당 아이템에 대해 remove() 처리를 하는 것이다. 그러나 다음 코드와 같이 실행했을 때 아래와 같은 에러 등이 발생한다. 각 아이템을 List에서 제거하면서 List 내부조정에 따른 아이템의 인덱스 등이 달라지기 때문이다

public static void main(String[] args){
	ArrayList<Integer> numbers = new ArrayList<Integer>(
		Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
	for (Integer num: numbers){
		if(num % 2 ==0){
			numbers.remove(num);
		}
	}
}

 

java 8에서 제공하는 removeIf() 메소드를 사용하면 코드도 간결해지고 깔끔하게 해결을 할 수 있다.

public static void main(String[] args){
	ArrayList<Integer> numbers = new ArrayList<Integer>(
			Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
	numbers.removeIf(num -> num %2==0);
	System.out.println(numbers);
}

반응형

댓글