source

HashSet과 Set의 차이점은 무엇입니까?

nicesource 2022. 11. 4. 21:26
반응형

HashSet과 Set의 차이점은 무엇입니까?

다음과 같은 코드 조각을 보았다.

Set<Record> instances = new HashSet<Record>();

해시셋은 특별한 세트인지 궁금합니다.그들 사이에 어떤 차이가 있나요?

A Set는 일반적인 "값 집합"을 나타냅니다.aTreeSet요소가 정렬(및 순서가 지정됨)되는 세트입니다.HashSet요소가 정렬 또는 정렬되지 않은 세트입니다.

A HashSet통상, 보다 훨씬 고속입니다.TreeSet.

A TreeSet는 보통 레드블랙 트리로 구현됩니다(http://en.wikipedia.org/wiki/Red-black_tree 참조).Sun/Sun의 실제 구현은 검증되지 않았습니다.TreeSet)에 비해 a는HashSet사용하다Object.hashCode()배열에 인덱스를 만듭니다.레드-블랙 트리의 접근 시간은O(log(n))액세스 타임에 대해서,HashSet일정한 시간부터 최악의 경우까지(모든 항목이 동일한 해시 코드를 가지며) 선형 검색 시간을 가질 수 있습니다.O(n).

는 의 실장입니다.

집합은 중복된 요소를 포함하지 않는 집합입니다.Set은 인터페이스입니다.

HashSet은,Set인터페이스, 해시 테이블(실제로는HashMapinstance)를 클릭합니다.

부터HashSet의 특정 구현의1개입니다.Set인터페이스입니다.

ASet아래 클래스에 의해 구현되었기 때문에 다음 중 하나가 될 수 있습니다.

ConcurrentSkipListSet : 를 기반으로 한 확장 가능한 동시 네비게이션 가능 세트 구현ConcurrentSkipListMap세트의 요소들은 자연적인 순서에 따라 정렬되거나, 또는 순서에 따라 정렬됩니다.Comparator사용되는 생성자에 따라 설정 생성 시 제공됩니다.

CopyOnWriteArraySet : 모든 작업에 내부 CopyOnWriteArrayList를 사용하는 세트입니다.

EnumSet : Enum 형식과 함께 사용하기 위한 특수한 Set 구현입니다.열거 집합의 모든 요소는 집합이 생성될 때 명시적으로 또는 암묵적으로 지정된 단일 열거 유형에서 가져와야 합니다.

TreeSet : TreeMap에 기반한 NavigableSet 구현.요소는 사용되는 생성자에 따라 자연 순서를 사용하거나 세트 작성 시 제공된 비교기에 의해 정렬됩니다.

LinkedHashSet: 예측 가능한 반복 순서를 가진 Set 인터페이스의 애쉬 테이블 및 링크드 리스트 구현.이 실장은 HashSet과 달리 모든 엔트리에서 실행 중인 이중 링크목록을 유지합니다.

그렇지만HashSet일 수 있다LinkedHashSet부터LinkedHashSet서브클래스HashSet

문제는 해결되었지만, 왜 같은 코드로 두 가지 타입을 언급하고 있는지에 대한 답을 보지 못했습니다.

통상, 인터페이스(이 경우는 Set)에 대해서 코드를 작성합니다.왜일까요?항상 인터페이스를 통해 오브젝트를 참조하는 경우(새로운 HashSet() 제외), 코드 베이스에서 오브젝트를 1번밖에 언급하지 않았기 때문에 오브젝트의 실장을 변경하는 것이 좋다고 판단되면 나중에 변경하는 것은 간단한 일이기 때문입니다.

Set은 Set과 같은 컬렉션에 대한 일반적인 인터페이스이며 HashSet은 Set 인터페이스의 특정 구현입니다(해시 코드, 즉 이름을 사용).

Set은 TreeSet, LinkedHashSet 등의 모든 세트클래스의 부모 인터페이스입니다.

HashSet은 Set 인터페이스를 구현하는 클래스입니다.

HashSet은 Set 인터페이스에서 파생된 클래스입니다.HashSet은 집합의 파생 클래스로 집합의 속성을 가져옵니다.중요하며 가장 자주 사용되는 집합의 파생 클래스는 HashSet과 TreeSet입니다.

**

  • 설정:

** 이 인터페이스는 LIST 및 QUE와 마찬가지로 Collection 인터페이스의 서브타입입니다.

집합에는 하위 클래스가 3개 미만이며 중복 없이 여러 개체를 저장하는 데 사용됩니다.

  1. 해시 세트
  2. Linked Hash Set(링크드 해시 세트)
  3. TreeSet(SortedSet 인터페이스를 구현하는 경우)

**

  • 해시 세트:

**

하나의 NULL 값을 사용할 수 있습니다(복제가 허용되지 않음). 데이터는 시퀀스를 유지하지 않기 때문에 임의로 저장됩니다.

언급URL : https://stackoverflow.com/questions/5139724/whats-the-difference-between-hashset-and-set

반응형