• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

UserDaoService 클래스의 deleteById 메소드에서

21.07.09 21:38 작성 조회수 408

0

if(user.getId() == id){
iterator.remove();
return user;
}

iterator.next()로 반환받은 값을 user에 넣은 후에

iterator.remove()를 호출해서 user를 삭제했는데

어떻게 user를 return 해줄 수가 있는 거예요?

뭔가 제 생각에는 저 iterator와 user가 같은 객체를 가리키고 있어서 iterator.remove()를 하면 user도 null이 되어야 할 거 같은데... 디버깅 해봐도 user값이 멀쩡히 남아있네요! 

제가 iterator에 대해서 잘 몰라서 그런 것 같긴한데 iterator에 대해서 찾아봐도 잘 이해가 되지 않아요 ㅠㅠ

답변 1

답변을 작성해보세요.

0

안녕하세요, 이도원입니다. 

위 코드에서 반환한 user는 매개변수로 전달된 값입니다. 따라서, iterator에서 삭제한 데이터와는 별개이며, 해당 데이터가 삭제되었다는 의미로 다시 반환하였습니다. 전체 데이터는 iterator에 저장되어 있었기 때문에, delete 요청에 따라 해당 데이터는 삭제한 것이 맞지만, 사용자 요청에 사용된 user 객체 자체가 삭제된 것은 아닙니다.

감사합니다. 

B#님의 프로필

B#

2021.09.29

저도 이은주님처럼 생각해서 혹시나 질문이 있을까 해서 들어와봤더니 있네요!

iterator.next()가 반환한 user가 매개변수로 전달된 값이라는 부분이 잘 이해가 안 되는데요..
stack의 pop처럼 stack에서는 빠지고, 빠져나간 걸 받는 개념이 아니라, 복사가 된 것을 받는 개념인가요? 그래서 iterator에는 그대로 저장이 되어있었던 것인가해서요!