인프런 커뮤니티 질문&답변
UserDaoService 클래스의 deleteById 메소드에서
작성
·
574
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에 대해서 찾아봐도 잘 이해가 되지 않아요 ㅠㅠ
퀴즈
51%나 틀려요. 한번 도전해보세요!
Spring API 설계에서 Service/DAO 클래스는 주로 어떤 역할을 담당하나요?
클라이언트 요청을 직접 처리하고 응답한다.
비즈니스 로직 및 데이터 접근을 처리한다.
HTTP 상태 코드를 정의하고 관리한다.
UI 화면을 구성하고 보여준다.
답변 1
0
Dowon Lee
지식공유자
안녕하세요, 이도원입니다.
위 코드에서 반환한 user는 매개변수로 전달된 값입니다. 따라서, iterator에서 삭제한 데이터와는 별개이며, 해당 데이터가 삭제되었다는 의미로 다시 반환하였습니다. 전체 데이터는 iterator에 저장되어 있었기 때문에, delete 요청에 따라 해당 데이터는 삭제한 것이 맞지만, 사용자 요청에 사용된 user 객체 자체가 삭제된 것은 아닙니다.
감사합니다.






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