본문 바로가기

Backend/Java

Set

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