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 값으로 생각하고 코드를 작성해야하기 때문에 불편하고 그만큼 가독성이 떨어진다.
구글링을 해보니 더 좋은 method가 있어 써봤는데
훨씬 깔끔하고 가독성도 좋다
getHotProjectRes.removeIf(GetHotProjectRes -> (GetHotProjectRes.getPj_recruit().equals("마감")));
위 코드 예시가 실제 프로젝트에서 사용한 코드라 이해가 어려울 것 같은데
아래 블로그 내용을 참고한 내용이니 쉬운 예시가 필요하신 분들은 저쪽 예시 코드를 보면서 이해하시면 됩니당