반응형
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);
}
반응형
'개발 > 기타' 카테고리의 다른 글
Mybatis parameterType List foreach insert(Oracle, MySQL) (0) | 2022.02.21 |
---|---|
Maven Build 옵션(pl, am, amd) - 멀티모듈에서 특정 모듈만 빌드 (0) | 2022.02.18 |
jQuery 동적추가(append, html) Click 이벤트 처리 (0) | 2022.02.11 |
Nginx 설치 from Source(Mac기준) (0) | 2022.01.18 |
Cookie 공유 범위 (0) | 2022.01.10 |
댓글