HashSet 클래스

CODEDRAGON Development/Algorithm, DataStructure

반응형

 

HashSet 클래스

·       기본적인 Set인터페이스를 구현하고 있는 대표적인 컬렉션입니다.

·       HashSet은 내부적으로 HashMap을 이용하여 만들어 졌으며 해시(Hash)를 이용해서 구현되었기 때문에 붙여진 이름입니다.

·       Set인터페이스의 특징대로 정렬순서나 반복처리시 처리순서에 대한 기준은 없습니다.(비정렬)

·       HashSet에 새로운 요소를 추가하기 위해 add(), addAll()메소드를 사용하며 이 때 이미 저장되어 있는 요소와 중복이 될 경우 해당 메소드는 false를 반환하여 중복된 요소로 인해 추가가 실패했음을 알려줍니다. 이러한 HashSet의 특징을 이용하면 컬렉션 내의 중복 요소들을 쉽게 제거할 수 있습니다.(중복불가)

·       List인터페이스를 구현한 ArrayList 컬렉션과 달리 HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하려면 LinkedHashSet을 사용해야 합니다.

·       반복 처리시에는 저장된 요소(Element)의 수와는 별도로 용량에 비례하는 시간이 필요하므로 반복 처리하는 성능이 중요한 응용프로그램에서는 초기용량을 너무 높게 설정하지 않는 것이 중요합니다.

·       HashSet 클래스는 Set 인터페이스를 구현하므로, 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않습니다. 만약 요소의 저장 순서를 유지해야 한다면 JDK 1.4부터 제공하는 LinkedHashSet 클래스를 사용하면 됩니다.

 

 

 

HashSet 생성자

생성자명

설명

HashSet()

·       새로운 HashSet 객체를 생성하고 초기화합니다.

HashSet(Collection c)

·       주어진 컬렉션을 포함하는 HashSet객체를 생성합니다.

HashSet(int initialCapacity)

·       주어진 값을 초기용량으로 하는 HashSet객체를 생성합니다.

HashSet(int initialCapacity, float loadFactor)

·       초기용량과 load factor를 지정하는 생성자입니다.

·       loadFactor는 컬렉션 클래스에 저장공간이 가득차기 전에 미리 용량을 확보하기 위한 것입니다. 이값을 0.8로 설정하면 저장공간의 80%가 가득차게 되면 용량이 두 배로 늘어나게 됩니다.

·       loadFactor의 기본값은 0.75(75%)입니다.