Return to Video

Hashes 16 getValue()

  • 0:04 - 0:08
    해시 딕셔너리를
    자주 이용하게 되는 경우 중 하나는
  • 0:08 - 0:12
    키를 가지고 어떤 값을
    찾고자 하는 경우입니다
  • 0:12 - 0:20
    이런 함수가 있다고 해 봅시다
  • 0:20 - 0:26
    우리가 찾고자 하는 일반적인 값인
    V를 반환해주죠
  • 0:26 - 0:33
    그리고 이 값에 해당하는 키를
    입력값으로 넣어줄 겁니다
  • 0:33 - 0:38
    어떻게 키를 넣으면
    이 값을 반환받을 수 있을까요?
  • 0:38 - 0:46
    방법은 바로 이렇습니다
  • 0:46 - 0:55
    키를 받아서
    그 키의 해시 코드를
  • 0:55 - 0:57
    그 다음에는 뭘 하면 좋을까요?
  • 0:57 - 1:04
    양수로 만들어줍니다
  • 1:04 - 1:08
    그 다음은요?
  • 1:08 - 1:17
    tableSize 값으로 나눈
    나머지를 구해줍니다
  • 1:17 - 1:20
    이렇게 하면
    연결 리스트로 되어 있는 배열에서의
  • 1:20 - 1:29
    인덱스를 알 수 있습니다
  • 1:29 - 1:31
    이렇게 생긴
    연결 리스트로 된 배열이 있고
  • 1:31 - 1:33
    어떤 칸은 비어있을 수도 있고
  • 1:33 - 1:35
    어떤 칸에는 하나의 요소가
    연결되어 있을 수도 있고
  • 1:35 - 1:37
    하나 이상의 요소가 있는 칸도 있겠죠
  • 1:37 - 1:40
    몇 개의 요소가 들어있는지
    우리는 알 수 없고
  • 1:40 - 1:41
    알 필요도 없습니다
  • 1:41 - 1:44
    우리가 알고자 하는 것은
  • 1:44 - 1:48
    찾으려고 하는 키의 위치입니다
  • 1:48 - 1:53
    만약 이 해시가 일반적인 해시처럼
    중복된 키를 허용하지 않는다면
  • 1:53 - 2:00
    이 정의에 따라 이 키는
    다른 키들과는 다르겠죠
  • 2:00 - 2:07
    여기서 우리가 할 일은
    그냥 반복하는 겁니다
  • 2:07 - 2:17
    우리는 이 연결 리스트 내에서
    반복적인 작업을 할 겁니다
  • 2:17 - 2:31
    harray[hashval]에서
    해시 요소를 하나 꺼냅니다
  • 2:31 - 2:34
    연결 리스트를 만들 때 사용했던
  • 2:34 - 2:36
    반복문을 그대로 사용하는 거죠
  • 2:36 - 2:41
    이것이 바로 우리가
    반복문을 쓰는 이유입니다
  • 2:41 - 2:44
    이제 우리가 해야 할 일은
    이 첫 번째 요소에 대해서
  • 2:44 - 2:47
    이 요소의 키가 우리가 찾고자 하는
    키와 같은지 알아보는 겁니다
  • 2:47 - 2:48
    이 요소에 대해서도
  • 2:48 - 2:50
    우리가 찾으려고 하는 키와
    같은 키를 가졌는지 알아봅니다
  • 2:50 - 2:51
    그 다음 요소에 대해서도
  • 2:51 - 2:53
    찾으려고 하는 키와
    같은 키를 가졌는지 알아봅시다
  • 2:53 - 2:54
    어떤 방법으로 하면 좋을까요?
  • 2:54 - 2:56
    Comparable을 사용하면 됩니다
  • 2:56 - 3:02
    if문을 쓰고
    Comparable을 씁니다
  • 3:02 - 3:04
    이때 우리가 비교하고자 하는 값은
  • 3:04 - 3:07
    해시 요소 E가 아닙니다
  • 3:07 - 3:12
    그 요소의 키를 비교합니다
  • 3:12 - 3:18
    그렇기 때문에 Comparable에
    K를 써 줍니다
  • 3:18 - 3:25
    (Comparable<K>)key에
    compareTo 함수를 사용해서
  • 3:25 - 3:29
    he.key와 비교하고
  • 3:29 - 3:32
    그 값이 0인지 확인합니다
  • 3:32 - 3:34
    그 결과가 참이 되면
    우리가 원하는 상황인 거죠
  • 3:34 - 3:38
    이렇게 되면 이 값을 반환하면 됩니다
  • 3:38 - 3:46
    he.val을 반환합니다
  • 3:46 - 3:48
    여기까지 왔는데도
    아직 반환하지 않았다면
  • 3:48 - 4:04
    반환할 것이 없기 때문에
    null을 반환합니다
  • 4:04 - 4:07
    이 코드는
    지난 몇 주 동안 우리가 배운
  • 4:07 - 4:09
    여러 가지 내용을 합쳐서
    만든 겁니다, 그렇죠?
  • 4:09 - 4:13
    Comparable과
    비교 키를 사용했고
  • 4:13 - 4:15
    그리고 여기에서는
    반복자도 사용했습니다
  • 4:15 - 4:16
    여기에서 사용한 반복자는
  • 4:16 - 4:19
    연결 리스트에서 사용했던 반복자입니다
  • 4:19 - 4:22
    첫 번째 과제에서 힘들게
    반복자를 쓰려고 했던 이유는
  • 4:22 - 4:26
    두 번째 과제인 연결 리스트에서
    이를 사용할 수 있기 때문입니다
  • 4:26 - 4:30
    hashCode를 사용해서
    일정한 시간 내에
  • 4:30 - 4:35
    즉, O(1)로 연결 리스트의
    데이터에 접근할 수 있도록 했고
  • 4:35 - 4:37
    이는 기본적으로 여러 연결 리스트의
  • 4:37 - 4:40
    배열을 가지고 있기 때문이었죠
  • 4:40 - 4:44
    그렇기 때문에
    어떤 요소든 추가하고 찾고
  • 4:44 - 4:47
    삭제하는 작업을 일정한 시간 내에
    수행할 수 있게 됩니다
  • 4:47 - 4:50
    그리고 원하는 만큼 많은 데이터를
  • 4:50 - 4:53
    연결 리스트에 저장할 수 있게 되었죠
  • 4:53 - 4:58
    바로 해시를 이용해서 말입니다
Title:
Hashes 16 getValue()
Description:

more » « less
Video Language:
English
Duration:
04:58

Korean subtitles

Revisions