728x90
< Set 자료구조 컬렉션 클래스에 대한 이해 >
Set 자료구조 데이터
- 저장되는 데이터에 순서가 없다
- 중복되는 데이터가 저장되지 않는다
Set 자료구조를 위해 정의된 인터페이스
- 여러 건의 데이터를 하나의 객체로 관리한다 => List<E> 인터페이스와 유사하다
- 입력된 데이터에 순서가 없다
- 입력된 데이터의 순서를 관리하지 않기 때문에 List<E>와 다르게 인덱스 개념이 없다
- List<E> 인터페이스와는 다르게 인덱스를 이용해 데이터를 다루는 메서드가 없다
- 입력된 데이터들의 중복을 허용하지 않는다
- Map<K, V> 인터페이스의 Key와 유사하다
- 데이터의 중복을 제거하기 위한 필터로 자주 사용된다
Set<E> 인터페이스에 대한 이해
- Collection<E> 인터페이스를 상속하여 정의된 인터페이스
- Collection<E> 인터페이스와 거의 동일한 메소드들이 정의된다
- 그러나 인덱스 개념이 필요한 List<E> 인터페이스 메서드는 정의되지 않는다
대표적인 Set 자료구조의 컬렉션 클래스
- HashSet<E> 이 가장 많이 사용되는 클래스
HashSet<E> 클래스에 대한 이해
- List의 인덱스, Map의 Key처럼 저장된 데이터에 접근하기 위한 정보가 없다
- List, Map 인터페이스에서 인덱스나 Key를 이용해 데이터에 접근하는 get 메서드가 정의되지 않는다
- 저장된 데이터가 Hash 알고리즘을 이용해 구조화되어 있어 데이터 탐색 속도가 빠르다
- java.util 패키지에 존재한다
< Set 자료구조 컬렉션 클래스의 활용 >
HashSet 객체 생성 문법
import java.util.HashSet;
HashSet <Type-Class> hashSet-name = new HahsSet<>();
- import java.util.HashSet
- HashSet 클래스를 사용하기 위해 컴파일러에 해당 Class가 존재하는 패키지 정보를 제공한다
- HashSet
- 생성하고자 하는 객체가 HashSet 클래스임을 지정한다
- <Type-Class>
- 제네릭을 이용해 HashSet 객체 내에서 데이터 타입을 지정한다
- 데이터 타입의 Class 이름을 사용한다
- hashSet-name
- 생성하고자 하는 HashSet 객체의 변수명 지정
HashSet 객체 생성
HashSet<E> 객체의 데이터 추가
- boolean add(E e)
- boolean addAll(Collection<? extends E> c)
boolean add(E e)
- 객체 생성 시 정의한 데이터 타입(<E>)을 인자로 전달하여 순서없이 추가한다
- 수행 결과로 boolean 타입의 값을 반환한다
- 데이터를 추가한 순서가 HashSet 객체에서 유지되지 않는다
- 중복된 데이터의 추가가 불가하다
booelan addAll(Collection<? extends E> c)
- 인자로 전달한 Collection 객체의 데이터들을 추가한다
- HashSet 객체 생성 시 정의한 데이터 타입(<E>)을 원소로 갖는 Collection 객체여야 한다
- 중복된 데어티는 제거하고 추가된다 - 합집합과 동일한 기능을 수행한다
HashSet<E> 객체의 데이터 탐색
- boolean contains(Object o)
- int hashCode()
- int size()
boolean contains(Object o)
- 전달 받은 데이터의 객체가 포함되어 있는지를 확인하여 boolean 타입으로 결과를 반환한다
int hashCode()
- HashSet 객체 내 데이터들의 Hahs 값을 더한 값을 반환한다
- Null 값의 경우 0으로 Hahsing 된다
- HashSet 객체들이 동일한지를 체크할 때 사용 가능하다
int size()
- 객체에 저장되어 있는 데이터의 개수를 조회한다
HashSet<E> 객체의 데이터 변경
- void clear()
- boolean remove(Object o)
- boolean removeAll(Collections<?> c)
- boolean retainAll(Collections<?> c)
void clear()
- 객체 내 모든 데이터를 제거한다
boolean remove(Obejct o)
- 전달받은 데이터를 객체에서 제거하고 수행 결과를 boolean 타입으로 반환한다
boolean removeAll(Collections<?> c)
- 인자로 전달한 Collection 객체가 가지고 있는 데이터들을 모두 제거한다
- 차집합과 동일한 기능을 수행한다
boolean retainAll(Collection<?> c)
- 두 개의 HashSet 객체에 모두 존재하는 데이터만 선택한다
- 교집합과 동일한 기능을 수행한다
728x90
'코드프레소 체험단 > Java 프로그래밍' 카테고리의 다른 글
[Java 프로그래밍 초급] Map 자료구조 컬렉션 클래스 (0) | 2022.06.10 |
---|---|
[Java 프로그래밍 초급] List 자료구조 컬렉션 클래스 (0) | 2022.06.09 |
[Java 프로그래밍 초급] 컬렉션 프레임워크 (0) | 2022.06.08 |
[Java 프로그래밍 초급] Map 자료구조 컬렉션 클래스 (0) | 2022.01.27 |
[Java 프로그래밍 초급] 객체지향 고급 (3) (0) | 2022.01.25 |
댓글