인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

leezus님의 프로필 이미지
leezus

작성한 질문수

[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발

사용자 삭제를 위한 API 구현 - HTTP DELETE method

UserDaoService 클래스의 deleteById 메소드에서

작성

·

553

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

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

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

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

감사합니다. 

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

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

leezus님의 프로필 이미지
leezus

작성한 질문수

질문하기