HashSet과 HashMap의 차이점은 무엇입니까? 입니까? 나는 현명한 구현을 의미합니까? 둘

HashSet중복 값을 허용하지 않는다는 사실 외에도 HashMapHashSet? 의 차이점은 무엇 입니까?

나는 현명한 구현을 의미합니까? 둘 다 해시 테이블 을 사용 하여 값을 저장 하기 때문에 약간 모호 합니다.



답변

그것들은 완전히 다른 구성입니다. 의 HashMap구현입니다 Map. 지도 키를 값에 매핑합니다. 키 조회는 해시를 사용하여 발생합니다.

반면에 a HashSet는의 구현입니다 Set. 설정은 집합의 수학적 모델에 맞게 설계되었습니다. 언급했듯이 A HashSetHashMap구현을 지원하기 위해 a 를 사용합니다 . 그러나 완전히 다른 인터페이스를 구현합니다.

Collection자신의 목적에 가장 적합한 것이 무엇인지 찾고 있다면 이 자습서 는 좋은 출발점입니다. 실제로 무슨 일이 일어나고 있는지 알고 싶다면 그 책 도 있습니다.


답변

HashSet은 집합입니다 (예 : {1,2,3,4,5}).

HashMap은 키-> 값 (키 대 값) 맵입니다 (예 : {a-> 1, b-> 2, c-> 2, d-> 1}).

위의 예제에서 HashMap에는 중복 키가 없어야하지만 중복 값이있을 수 있습니다.

HashSet에는 중복 요소가 없어야합니다.


답변

해시 세트

  1. HashSet 클래스는 Set 인터페이스를 구현합니다.
  2. HashSet에는 객체 (요소 또는 값)를 저장합니다. 예를 들어 문자열 요소의 HashSet이있는 경우 HashSet 요소 집합을 나타낼 수 있습니다. {“Hello”,“Hi”,“Bye”,“Run”}
  3. HashSet은 중복 요소를 허용하지 않으므로 HashSet에 중복 값을 저장할 수 없습니다.
  4. HashSet은 단일 null 값을 가질 수 있습니다.
  5. HashSet이 동기화되지 않았으므로 명시 적으로 동기화하지 않는 한 스레드 안전 작업에 적합하지 않습니다. [유사]

                          add      contains next     notes
    HashSet               O(1)     O(1)     O(h/n)   h is the table 

해시 맵

  1. HashMap 클래스는 Map 인터페이스를 구현합니다.
  2. HashMap은 키 및 값 쌍을 저장하는 데 사용됩니다. 즉, 키와 값의 매핑을 유지 관리합니다 (HashMap 클래스는 동기화되지 않고 null을 허용한다는 점을 제외하고는 Hashtable과 거의 동일합니다). 예 : {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
  3. HashMap은 중복 키를 허용하지 않지만 중복 값을 가질 수 있습니다.
  4. HashMap은 단일 널 키와 임의의 수의 널 값을 허용합니다.
  5. HashMap이 동기화되지 않았으므로 명시 적으로 동기화하지 않는 한 스레드 안전 작업에 적합하지 않습니다. [유사]

                           get      containsKey next     Notes
     HashMap               O(1)     O(1)        O(h/n)   h is the table 

자세한 내용은 이 기사 를 참조하십시오 .


답변

두 이름이 모두 Hash로 시작한다는 것은 정말 부끄러운 일입니다 . 그것은 그들 중 가장 중요한 부분입니다. 중요한 부분은 다른 사람들이 지적했듯이 해시집합지도 뒤에옵니다 . 그것들 각각 은 순서가없는 컬렉션 인 세트 이있는 액세스가 가능한 컬렉션 인 세트입니다. 그것들은 이름에서 유래 한 해시로 구현되지만 그들의 본질은 이름의 그 부분 뒤에 숨겨져 있습니다.

그들의 이름으로 혼동하지 마십시오. 그들은 매우 다른 것들입니다.


답변

Hashset내부적으로 구현 HashMap. 내부 구현을 보면 HashSet에 삽입 된 값은 HashMap에 키로 저장되며 값은 Object 클래스의 Dummy 객체입니다.
HashMap과 HashSet의 차이점은 다음과 같습니다.

  1. HashMap 키 값 쌍을 포함하며 get 메소드가 없으므로 매번 HashSet을 반복해야하므로 키로 각 ​​값에 액세스 할 수 있습니다.
  2. HashMapMap 인터페이스를 구현하고 하나의 null 값을 키로 허용하고 여러 null 값을 값으로 허용합니다 .Set HashSet인터페이스 를 구현하는 경우 하나의 null 값만 허용하고 중복 된 값은 허용하지 않습니다. HashSet은 HashMap을 내부적으로 구현합니다.
  3. HashSet그리고 HashMap반복하면서 삽입의 순서를 유지하지 않습니다.

답변

HashSet을 사용하면 HashMap을 사용하여 키와 값을 기준으로 객체를 저장할 수있는 세트에 객체를 저장할 수 있습니다. 모든 객체 또는 저장된 객체에는 키가 있습니다.


답변

이름에서 알 수 있듯이 HashMap 은 연관 (키에서 값으로 매핑)이며 HashSetSet 입니다.