>  기사  >  Java  >  자바 세트는 무엇을 의미하나요?

자바 세트는 무엇을 의미하나요?

(*-*)浩
(*-*)浩원래의
2019-05-31 13:41:015497검색

java.util.Set 인터페이스는 java.util.List 인터페이스와 동일하며 Collection 인터페이스에서도 상속됩니다. 기본적으로 Collection 인터페이스를 확장하지 않습니다. 그러나 Collection 인터페이스보다 더 엄격합니다. List 인터페이스와 달리 Set 인터페이스의 요소는 순서가 지정되지 않으며 저장된 요소가 반복되지 않도록 특정 규칙이 사용됩니다.

자바 세트는 무엇을 의미하나요?

Set 컬렉션에는 여러 하위 클래스가 있습니다. 여기서는 java.util.HashSet 및 java.util.LinkedHashSet 두 컬렉션을 소개합니다.

기능: 저장된 요소가 반복되지 않도록 보장하는 특정 규칙이 있습니다. Set 인터페이스의 요소는 순서가 없습니다.

①요소는 반복되지 않습니다.

②요소는 순서가 없습니다(순서가 없는 액세스 참조)

해시 테이블 : 사용자 정의 개체가 해시 테이블에 저장되어 있는 한 사용자 정의 개체가 속한 클래스는 hashCode&equals 메서드

⑴HashSet 컬렉션

하단 계층은 다음을 통해 구현된 하위 수준의 새로운 HashMap 개체입니다. HashMap, 값 값을 사용하여 통합 주소 new Object()

API 소개:

java.util.HashSet은 Set 인터페이스의 구현 클래스입니다. -반복 가능하며 요소가 모두 순서가 없습니다(즉, 액세스 순서가 일관되지 않습니다). java.util.HashSet의 기본 구현은 실제로 java.util.HashMap 지원입니다. HashSet은 객체의 해시 값을 기반으로 컬렉션의 요소 저장 위치를 ​​결정하므로 액세스 및 검색 성능이 좋습니다. 요소의 고유성을 보장하는 방법은 hashCode 및 equals 메소드에 의존합니다.

특징:

1중복된 요소 없음

2일관되지 않은 액세스 순서

3좋은 액세스 및 검색 성능

4요소 고유성 방법은 다음을 사용합니다: hashCode 및 같음 메서드

HashSet 컬렉션 저장 데이터 구조(해시 테이블):

JDK1.8 이전에는 해시 테이블의 하위 계층이 배열 + 연결 목록으로 구현되었습니다. 연결 목록을 사용하여 충돌을 처리하더라도

해시 값이 동일한 연결 목록은 모두 연결 목록에 저장됩니다. . 그러나 버킷에 요소가 많은 경우, 즉 동일한 해시 값을 갖는 요소가 많은 경우 키 값을 기준으로 순차적으로 검색하는 효율성은 낮다.

JDK1.8에서는 배열 + 연결 리스트 + 레드-블랙 트리를 사용하여 해시 테이블 저장을 구현합니다.

연결 리스트의 길이가 임계값(8)을 초과하면 연결 리스트가 레드-블랙 트리로 변환됩니다. , 검색 시간이 크게 단축됩니다.

간단히 말하면, JDK1.8에 레드-블랙 트리가 도입되면서 HashMap의 성능이 크게 최적화되었습니다.

따라서 HashSet 컬렉션 요소가 고유하다는 것을 보장하는 것은 실제로 객체의

hashCode 및 같음을 기반으로 결정됩니다. 행동 양식. 컬렉션에 사용자 정의 개체를 저장하는 경우 해당 개체의 고유성을 보장하려면 hashCode 및 equals 메서드를 재정의하여 현재 개체에 속하는 비교 메서드를 설정해야 합니다.

요약: 1.8 이전에는 배열 + 연결 리스트를 이용하여 해시 테이블의 최하위 레이어를 통해 구현했습니다.

1.8에서는 배열 + 연결 리스트 + 레드-블랙 트리를 이용하여 해시 테이블 저장소를 통해 구현했습니다. 연결된 목록이 임계값(8)을 초과하면 연결된 목록이 Red-black 트리로 변환되어 검색 시간이 크게 단축됩니다.) 요소가 고유한지 확인하려면 hashCode 및 equals 메서드를 다시 작성하여 소속된 비교 메서드를 설정해야 합니다.

HashSet은 사용자 정의 유형 요소를 저장합니다(강조):

HashSet에 사용자 정의 저장 요소를 입력할 때 객체의 hashCode 및 equals 메소드를 다시 작성해야 합니다.

객체의 비교 방법을 직접 설정해야 합니다.

⑵LinkedHashSet

HashSet은 요소가 고유하지만 순서 없이 저장되도록 합니다. 그러면 java.util 하위 클래스가 있는지 확인하려면 어떻게 해야 할까요? .LinkedHashSet은 HashSet 아래에 연결 리스트와 해시 테이블을 결합한 데이터 저장 구조입니다.

위 내용은 자바 세트는 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.