728x90
[ HashSet Class ]
- 중복 없는 데이터 집합을 다룸
- 컬렉션 프레임워크 중 데이터 처리 속도가 가장 빠름
- HashMap Class와 유사한 작동 원리
컬렉션 프레임워크의 기본개념과, HashSet의 개념은 아래 링크글을 참조하시면 됩니다.
2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4]
2019/12/11 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_Set 계열 [3/4]
[ 생성자 ]
- new HashSet<값 제네릭>();
- 인자값으로 용량과 사용률을 줄 수 있음 (HashMap과 동일)
- 용량 : 해시 테이블의 갯수를 의미 ( 카테고리의 갯수라고 보면 됨, 기본 16)
- 사용률 : 해시 테이블이 얼마만큼 다 차면 늘려줄 것인지 퍼센트를 기입 (기본 0.75)
package study.first;
import java.util.HashSet;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
// [zip, banana, apple, candy, dog, enum]
System.out.println(list);
}
}
[ add() ]
- 값 추가, 정렬 없이 내부 로직에 맞는 위치에 저장됨
- 중복값을 추가할 경우 변동 없음
package study.first;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
list.add("추가");
// [zip, banana, apple, candy, 추가, dog, enum]
System.out.println(list);
}
}
[ addAll() ]
- 제공한 다른 컬렉션의 값을 합쳐줌
- 중복된 값은 무시
package study.first;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
HashSet<String> list2 = new HashSet<String>();
list2.add("apple");
list2.add("추가");
list2.add("추가추가");
list.addAll(list2);
// [zip, banana, apple, candy, 추가, 추가추가, dog, enum]
System.out.println(list);
}
}
[ contains() ]
- 제공한 값이 Set에 있는지 여부를 확인하여 true / false 반환
package study.first;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
System.out.println(list.contains("zip")); // true
}
}
[ remove() / removeAll() ]
- remove() : 제공한 값을 제거
- removeAll() : 제공한 컬렉션이 가진 모든 값을 찾아서 제거
package study.first;
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
list.remove("zip"); // "zip" 삭제
System.out.println(list.contains("zip")); // false
HashSet<String> list2 = new HashSet<String>();
list2.add("apple");
list2.add("candy");
list.removeAll(list2); // list2의 항목 찾아서 삭제
System.out.println(list); // [banana, dog, enum]
}
}
Set 타입을 순서대로 정렬하고 싶으면 Set 타입 자체는 정렬할 수 없는 구조이므로 리스트 계열에 담아서 정렬하면 됩니다. 일반적으로 List 클래스를 생성해서 값을 담고, Collections 클래스를 이용해 정렬합니다. 배열의 정렬에 관해서는 따로 정리하도록 하겠습니다.
package study.first;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] value = { "zip", "banana", "apple", "candy", "enum", "dog", "dog", "enum" };
HashSet<String> list = new HashSet<String>();
// 데이터 저장
for (int i = 0; i < value.length; i++)
list.add(value[i]);
// 데이터 정렬
List<String> arr = new ArrayList<String>(list);
Collections.sort(arr);
// [apple, banana, candy, dog, enum, zip]
System.out.println(arr);
}
}
728x90
'▸JAVA > 라이브러리(API)' 카테고리의 다른 글
java.util.Collections 주요 메소드 [1/1] (2) | 2019.12.12 |
---|---|
java.util.TreeSet 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.TreeMap 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.HashMap 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.LinkedList 주요 메소드 [1/1] (2) | 2019.12.10 |
댓글