강의

멘토링

로드맵

Inflearn brand logo image

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

김종창님의 프로필 이미지
김종창

작성한 질문수

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

직접 구현하는 Set1 - MyHashSetV1

중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.

작성

·

16

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
강의 중급 2편의 56강 9분19초에서

강의 코드.jpg.webp

size++; 윗 줄의

bucket.add(value); 라는 코드는

자바 라이브러리에 있는 코드인가요? 아니면

영한님께서 작성한 코드인건가요?

강의에서 사용한 코드를 보면 배열의 값을 대입시키는 코드는 안보이는데

마지막에 있는 add()메서드가 값을 저장하게 된다고 말씀하셨는데 앞선 강의에서는 해당인덱스게 정수 값을 대입시키는 것 밖에 나와있지 않아서 질문하게 되었습니다

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김종창님

해당 코드는 자바 라이브러리에 있는 LinkedList 클래스의 add() 메서드입니다.

자세한 내용은 다음과 같습니다:

1. buckets 배열의 선언: MyHashSetV1 클래스를 보면, LinkedList<Integer>[] buckets;와 같이 buckets 변수가 LinkedList 객체들의 배열로 선언되어 있습니다.

2. buckets 초기화: initBuckets() 메서드에서는 이 buckets 배열의 각 인덱스에 new LinkedList<>();를 통해 새로운 LinkedList 인스턴스를 할당하고 있습니다.

3. bucket 변수: add(int value) 메서드 내부에서 LinkedList<Integer> bucket = buckets[hashIndex];와 같이 hashIndex에 해당하는 buckets 배열의 요소를 bucket 변수에 할당합니다. 이 bucket은 java.util.LinkedList 타입의 객체입니다.

4. bucket.add(value);: 따라서 bucket.add(value); 코드는 java.util.LinkedList 객체인 bucket의 add() 메서드를 호출하여 value를 해당 연결 리스트의 끝에 추가하는 것입니다.

이전에 강의에서 보셨던 inputArray = 1;와 같이 직접 배열 인덱스에 값을 대입하는 방식은 기본 배열(primitive array)에 값을 저장할 때 사용됩니다. 하지만 MyHashSetV1에서는 해시 충돌을 처리하기 위해 배열의 각 인덱스에 또 다른 자료구조인 LinkedList를 사용하고 있으며, 이 LinkedList에 add() 메서드를 통해 데이터를 저장하는 것입니다.

LinkedList는 자바 컬렉션 프레임워크의 일부로, 크기가 동적으로 변할 수 있는 리스트 자료 구조입니다. 이 add() 메서드는 LinkedList의 기능을 활용하여 요소를 추가하는 표준적인 방법입니다.

감사합니다.

0

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

김종창님이 질문하신 것은 bucket.add(value); 메서드에 대한 이해에 관한 것입니다. 이 메서드는 Java의 LinkedList 클래스에서 제공하는 메서드이며, 자바 표준 라이브러리에 포함되어 있습니다. 따라서 직접적으로 영한님께서 구현하신 코드는 아닙니다.

LinkedList는 Java Collections Framework의 일부로, 요소를 동적으로 추가하거나 삭제할 수 있는 자료구조입니다. bucket.add(value); 코드에서 add 메서드는 LinkedList에 새로운 요소를 추가하는 역할을 합니다. 만약 bucket 변수가 LinkedList<Integer> 타입이라면, 이 add 메서드는 리스트의 가장 끝에 value를 추가하게 됩니다. 이 과정은 원래 Java 라이브러리에 내장되어 있는 메서드입니다.

강의에서 사용하신 bucketbuckets라는 LinkedList 배열 내의 하나의 요소로, 특정 hashIndex 위치에 있는 LinkedList입니다. 배열 인덱스 위치에 직접 값을 대입하는 것이 아니라, 해당 LinkedList 내에 값을 추가하는 방식으로 해시 테이블의 충돌을 해결하며 데이터를 저장하게 됩니다.

자세한 내용과 실습 예시는 다음의 관련 강의에서 확인하실 수 있습니다:
- add 부분 코드 질문

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

김종창님의 프로필 이미지
김종창

작성한 질문수

질문하기