본문 바로가기
JAVA BASE/Collection(컬렉션) - 자료구조

09. [자바] HashSet - 생성자, 메소드

by staticClass 2021. 1. 4.

다른 컬렉션, 자료구조에 대한 설명이 필요하다면 아래 링크를 타시라.🤗

 

01. [자바] 컬렉션 프레임워크(Collections Framework)

컬렉션 프레임워크란? 다수의 데이터를 다루는 데 필요한 배열과 비슷하지만 더 성능이 뛰어난 많은 클래스들을 제공한다 크게 3가지 그룹이 있는데 List, Set, Map이다. 계층도와 같이 Map인터페이

staticclass.tistory.com


 

HashSet

데이터의 저장순서유지되지 않고 중복허용하지 않는다.특징을 히용하여 컬렉션 내의 중복 요소를 제거하기 편하다.해싱(Hashing)을 사용하여많은 양의 데이터검색하는데 높은 성능을 보인다.**
Set인터페이스를 구현한 가장 **대표적인 컬렉션이다.👏
**💡
(많은 양의 데이터를 저장하는데 적합하다.)**

HashSet은 저장순서를 유지하지 않기 때문에 만약 저장순서를 유지하고 싶다면 LinkedHashSet을 사용해야 한다.

생성자

생성자 설 명
HashSet() HashSet객체를 생성한다.
HashSet(Colleaction c) 주어진 컬렉션을 포함하는 HashSet객체를 생성한다.
HashSet(int initialCapacity) 주어진 값을 초기용량으로 하는 HashSet객체를 생성한다.
HashSet(int initialCapacity, float loadFactor) 초기용량과 load factor를 지정하는 생성자.

load factor?

저장공간이 가득 차기 전에 미리 용량을 확보하기 위한 것

예를 들어 이 값이 0.7면 저장공간의 70%가 채워졌을 때 용량이 2배로 늘어난다.

지정 하지 않았을때의 디폴트 값은 75%로 load factor가 0.75이다.

메소드

add, addAll - 객체 추가

메소드 설 명
boolean add(Object obj) 새로운 객체를 저장한다.
boolean addAll(Collection c) 주어진 컬렉션에 저장된 모든 객체들을 추가한다.(합집합)
Set hashSet1 = new HashSet();
// set은 중복이 불가하기 때문에 중복된 노드들은 제거됐다.
hashSet1.add(1); // Integer 타입의 숫자 1
hashSet1.add("1"); // 문자열 1
hashSet1.add("2"); // 문자열 2
hashSet1.add("2"); // 문자열 2
hashSet1.add("3"); // 문자열 3
hashSet1.add("3"); // 문자열 3

//숫자 1과 문자 1은 타입이 다르기 때문에 제거되지 않는다.
System.out.println(hashSet1); //결과 : [1, 1, 2, 3]
Set hashSet2 = new HashSet();

hashSet2.add("1");
hashSet2.add("2");
hashSet2.add("4");

//set은 중복이 불가하기 때문에 hashSet1의 노드중 
//hashSet2의 노드와 동일한 값이 있다면 제거된다.
hashSet2.addAll(hashSet1); // hashSet1의 모든 노드를 hashSet2에 저장한다.
System.out.println(hashSet2); // 결과 : [[1, 1, 2, 3, 4]

 

clear - 모든 데이터 삭제

메소드 설 명
void clear() 저장된 모든 객체를 삭제한다.
Set set = new HashSet();

set.add(1);
set.add(2);
System.out.println(set); // 결과 : [1, 2]

set.clear();
System.out.println(set); // 결과 : []

 

clone - 복제

메소드 설 명
Object clone() HashSet을 복사해서 반환한다.(얕은 복사)
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
System.out.println(set1); // 결과 : [1, 2]

HashSet set2 = (HashSet) set1.clone();
System.out.println(set2); // 결과 : [1, 2]

 

contains, containsAll - 데이터 확인

메소드 설 명
boolean contains(Object obj) 지정된 객체를 포함하고 있는지 알려준다.
boolean containsAll(Collection c) 주어진 컬렉션에 저장된 모든 객체들을 포함하고 있는지 알려준다.
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
System.out.println(set1.contains(3)); // 결과 : false

HashSet set2 = new HashSet();
set2.add(1);
set2.add(2);
System.out.println(set2.containsAll(set1)); // true

 

isEmpty() - 비었는지 확인

메소드 설 명
boolean isEmpty() HashSet이 비었는지 알려준다.
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
System.out.println(set1.isEmpty()); // 결과 : false

HashSet set2 = new HashSet();
System.out.println(set2.isEmpty()); // true

 

iterator() - Iterator반환

메소드 설 명
Iterator iterator() Iterator를 반환한다.
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);

Iterator it = set1.iterator();

while (it.hasNext()) {
	System.out.print(it.next()); // 결과 : 12
}

 

remove, removeAll - 삭제

메소드 설 명
boolean remove(Object obj) 지정된 객체를 HashSet에서 삭제한다.
(성공하면 true, 실패하면 false를 반환한다.)
boolean removeAll(Collection c) 주어진 컬렉션에 저장된 모든 객체와 동일한 것들을 
HashSet에서 삭제한다.(차집합)
(성공하면 true, 실패하면 false를 반환한다.)
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);

set1.remove(2); // true;
set1.remove(3); // false;

System.out.println(set1); // 결과 : [2]

HashSet set2 = new HashSet();
set2.add(1);
set2.add(2);
set2.add(3);

set2.removeAll(set1); // 하나라도 삭제되면 true
System.out.println(set2); // 결과 : [2, 3]

 

retainAll - 동일한 것만 남기고 삭제

메소드 설 명
boolean retainAll(Collection c) 주어진 컬렉션에 저장된 객체와 동일한 것만 남기고 삭제한다. (교집합)
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
set1.add(3);

HashSet set2 = new HashSet();
set2.add(1);
set2.add(2);
set2.add(4);

set2.retainAll(set1); // 일치하는 1, 2 외에 다 제거

System.out.println(set2); // 결과 : [1, 2]

 

size() - 저장 개수 반환

메소드 설 명
int size() 저장된 객체의 개수를 반환한다.
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);

System.out.println(set1.size()); // 결과 : 2

 

toArray() - 배열화

메소드 설 명
Object[] toArray() 저장된 객체들을 객체배열의 형태로 반환한다.
Object[] toArray(Object[] arr) 저장된 객체들을 주어진 객체배열(arr)에 담는다.
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
set1.add(3);

Object[] objArr = set1.toArray();
HashSet set1 = new HashSet();
set1.add(1);
set1.add(2);
set1.add(3);

Object[] tmpArr = new Object[set1.size()];
Object[] objArr = set1.toArray(tmpArr);

댓글