Set - HashSet
- 수학의 집합에 비유
- 저장 순서가 유지되지 않음
- 객체 중복 저장 불가
- 구현 클래스 : HashSet, LinkedHashSet, TreeSet
- 전체 객체를 대상으로 한 번씩 반복해 가져오는 반복자(Iterator) 제공
- 인덱스로 객체를 검색해서 가져오는 메소드 (get()) 없음
HashSet 예제 - 1
package set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class HashSetEx {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
// 중복된 값은 한 번만 저장됨
set.add("Java");
set.add("C++");
set.add("Python");
set.add("Java");
set.add("SQL");
System.out.println("총 객체 수 : " + set.size());
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()) { //들어 있는 객체 수 만큼 반복
System.out.println(iterator.next());
}
set.remove("C++");
set.remove("SQL");
System.out.println();
for(String element : set) {
System.out.println(element);
}
set.clear();
if (set.isEmpty()) {
System.out.println();
System.out.println("비어 있음");
}
}
}
HashSet 예제 - 2
package set;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
// 중복 값은 저장하지 않는 속성 이용하여 로또 번호 생성
public class HashSetLotto {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
for (int i=0; set.size()<6; i++) {
int num = (int)(Math.random()*45)+1;
set.add(num);
}
System.out.println(set);
// LinkedList 생성되면서 생성자로 set 전달
List<Integer> list = new LinkedList<Integer>(set);
System.out.println();
System.out.println("list : " + list);
Collections.sort(list); // 오름차순 정렬
System.out.println(list);
Collections.reverse(list); // 내림차순 정렬
System.out.println(list);
}
}
'Backend > Java' 카테고리의 다른 글
Map (0) | 2021.11.30 |
---|---|
Iterator (0) | 2021.11.30 |
this (0) | 2021.11.30 |
ArrayList와 LinkedList와 처리 시간 비교 (0) | 2021.11.30 |
LinkedList (0) | 2021.11.30 |