강의

멘토링

로드맵

Inflearn brand logo image

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

wonderwall09in님의 프로필 이미지
wonderwall09in

작성한 질문수

김영한의 실전 자바 - 중급 2편

직접 구현하는 연결 리스트3 - 추가와 삭제2

연결리스트 직접 구현V3 삭제 부분 코드 질문

작성

·

88

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요?예

안녕하세요 직접 구현하는 연결리스트 3 추가와 삭제 2편을 복습하다 궁금한 점이 생겨 여쭤보게 되었습니다 !

지금 Object remove 메서드에 else 구절을 보면 (첫번째 노드를 삭제하는 경우가 아닌 경우)

getNode(index-1).next = removedNode.next;로 구현이 되어있습니다 !

여기에서 스스로 복습하는 과정에서 저는

getNode(index-1).next = getNode(index+1);로 생각을 했었는데, 혹시 이 로직으로 해도 문제가 되지 않는지가 궁금하네요 ..!

 

그리고 바로 하단에

removeNode.item = null;

removeNode.next = null;로 직접 null 값으로 비워주는 이유가 있을까요 ?

getNode(index-1).next = getNode(index+1);로 두면 삭제할 노드인 getNode(index)는 연결이 끊기기에 자동으로 GC의 대상이 된다고 생각해서 여쭤봅니다 !

 

복습하면서 많은 것들을 처음에는 보이지 않던 것들을 많이 얻어가는 중입니다 좋은 강의 제공해주셔서 감사드립니다 !

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

연결 리스트의 삭제와 관련하여 궁금한 점을 여쭤봐 주셨네요. 질문하신 내용을 바탕으로 두 가지 점에 대해 설명드리겠습니다.

  1. getNode(index-1).next = getNode(index+1); 로직의 유효성:

    • getNode(index-1).next = removedNode.nextgetNode(index-1).next = getNode(index+1)는 기능적으로 유사하게 작동합니다. 둘 다 현재 위치의 노드를 제거하고, 그 노드의 이전 노드를 다음 노드에 연결하는 작업을 수행하는 것입니다.
    • 다만, 이 두 줄 모두 index, index-1, index+1에 대해 올바르게 정의된 상태이며, 리스트의 경계를 벗어나지 않았을 경우에만 제대로 작동한다는 점을 주의해야 합니다.
    • getNode(index+1)를 사용하는 것은 삭제할 노드의 바로 다음 노드에 대한 명확한 참조를 나타내긴 하지만, 코드의 기본적인 동작에 있어서는 큰 차이는 없을 것입니다.
  2. removeNode.item = null;removeNode.next = null;로 초기화하는 이유:

    • 이 처리는 가비지 컬렉션(GC)을 돕는 의미가 있습니다. Java에서는 객체가 더 이상 참조되지 않을 때 메모리가 자동으로 해제되지만, 명시적으로 사용한 자원을 해제해 줌으로써 메모리 관리에 도움을 줄 수 있습니다.
    • 특히, 리스트처럼 많은 노드를 담고 있는 경우에는 다음 노드에 대한 참조를 명시적으로 제거해 줌으로써 한번의 정리 단계에서 더 많은 노드를 메모리에서 해제할 수 있습니다.

제네릭 타입으로 전환하며 발생한 에러에 대한 질문도 받으셨는데, 이는 일반적으로 타입 변환과 관련이 있으며, 제네릭을 사용함으로써 더 명확한 타입 안전성을 제공하여 오류를 방지하는 데 기여합니다.

이 질문과 관련하여 더 구체적인 상세 내용을 다룬 질문들을 보실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wonderwall09in님의 프로필 이미지
wonderwall09in

작성한 질문수

질문하기