
List에서 요소를 삭제할 때
for문과 if문 쓰고 ?
What ?
removeIf()
💡 List 내 원하는 조건의 요소를 삭제하는 메서드입니다.
💡 조건에 맞는 요소가 삭제가 되면 true, 없으면 false 인 Boolean 값을 반환합니다.
💡 자바 8버전 이후부터 사용할 수 있습니다.
How ?
removeIf()
ArrayList.removeIf( predicate <? super E > filter)
Why ?
removeIf()
List<Example> getExampleList = someClass.getId(id);
for (int i = 0; i < getExampleList.size(); i++){
if(getExampleList.get(i).getName().equals("condition")){
getExampleList.remove(i);
i--;
}
}
/*
getExampleList 요소인 name이 "condition"이면 삭제하는 코드입니다.
요소가 삭제되면 List 개수가 감소하므로 "i--"를 합니다.
*/
💡 "i"에 추가 기능이 있는 경우 고려사항이 증가하고 가독성이 떨어집니다.
removeIf() 적용
getExampleList.removeIf((name) ->{
name.getName().equals("condition")
}
);
💡 코드의 가독성이 높아집니다.
활용
💡 리스트 내 요소 여부 확인
// 삭제 조건
boolean isDeleted = exampleList.removeIf(item -> condition == item.getSome());
// 삭제 요소 존재 여부
if (isDeleted) {
System.out.println("삭제되었습니다.");
} else {
System.out.println("존재하지 않습니다.");
}
- removeIf 의 반환값은 Boolean이므로 변수 초기화를 통해 확인할 수 있습니다.
💡 삭제 여부 확인
// 삭제 전 크기 저장
int initialSize = exampleList.size();
// 삭제 조건
boolean isDeleted = exampleList.removeIf(item -> condition == item.getSome());
// 삭제 후 크기 비교
if (exampleList.size() < initialSize || isDeleted) {
System.out.println("삭제되었습니다.");
} else {
System.out.println("존재하지 않습니다.");
}
}
- List의 초기 사이즈와 비교하고, removeIf 의 반환값을 통해 확인할 수 있습니다.