[Java] List.removeIf()

강신현·2022년 3월 7일
0

🔥 trouble shooting

List 를 for문으로 돌면서 GetHotProjectRes의 Pj_recruit가 마감일 경우
해당 List의 element를 삭제하는 코드를 작성하였다.

List<GetHotProjectRes> getHotProjectRes  = projectProvider.getHotProjects(user_id);

for (int i = 0; i < getHotProjectRes.size(); i++)
{
	if(getHotProjectRes.get(i).getPj_recruit().equals("마감")) getHotProjectRes.remove(i);
}

결과는 실패..
생각해보니

for문을 도는 와중에 element를 삭제해버리면 뒤 요소들의 index가 바뀐다

ㅎ..

for (int i = 0; i < getHotProjectRes.size(); i++)
{
     if(getHotProjectRes.get(i).getPj_recruit().equals("마감")) {
         getHotProjectRes.remove(i);
         i--;
     }
}

따라서 이번에는 index가 하나씩 땡겨지는 것을 생각하여 i-- 을 해주었다.
음.. 해결은 되었지만 위 코드는 문제가 하나 있다.
현재 코드는 문제가 없지만
만약 아래 i를 가지고 수행하는 로직이 있다면, i-1 값으로 생각하고 코드를 작성해야하기 때문에 불편하고 그만큼 가독성이 떨어진다.

List.removeIf()

구글링을 해보니 더 좋은 method가 있어 써봤는데
훨씬 깔끔하고 가독성도 좋다

getHotProjectRes.removeIf(GetHotProjectRes -> (GetHotProjectRes.getPj_recruit().equals("마감")));

위 코드 예시가 실제 프로젝트에서 사용한 코드라 이해가 어려울 것 같은데
아래 블로그 내용을 참고한 내용이니 쉬운 예시가 필요하신 분들은 저쪽 예시 코드를 보면서 이해하시면 됩니당

https://hi-dot.tistory.com/4

profile
땅콩의 모험 (server)

0개의 댓글

관련 채용 정보