찌니의 프로그래밍 삼매경

[java] Set 종류와 정리 본문

자바(java)

[java] Set 종류와 정리

zzI니☆ 2022. 3. 30. 02:28
728x90

Set은 집합이란 의미. 즉 Set은 순서가 없고 중복을 허용하지 않는다. 또한 Set은 집합 연산인 합집합 교집합 차집합의 연산이 가능합니다.

 

Set 사용법

Set<자료형> set 명 = new HashSet(or TreeSet)<>(); 

Set을 사용하기 위해서는 다음과 같이 선언해 줘야함.

// HashSet 패키지
import java.util.HashSet;
import java.util.Set;

// TreeSet 패키지
import java.util.Set;
import java.util.TreeSet;

Set 기능

  1. 삽입: Set.add(값);
  2. 제거: Set.remove(값);
  3. 크기: Set.size(); : Set에 크기를 반환한다.
  4. Set에 요소가 있는지 없는지 판단: Set.isEmpty();
    (없으면 True, 있으면 False를 반환)
  5. 지정한 값이 Set 안에 있는지 판단: Set.contains(값);
    (있으면 True, 없으면 False를 반환)

1) HashSet

HashSet은 순서 없이 요소를 저장하는 클래스. HashSet은 중복을 허용하지 않고 중복된 값을 추가할 경우 추가 작업은 실패하며 결과 값으로 False를 반환.

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetTest01 {

	public static void main(String[] args) {

		Set<String> set = new HashSet<>();

		if (set.add("korea")) {
			System.out.println("첫 번째 korea 추가 성공");
		} else {
			System.err.println("첫 번째 korea 추가 실패");
		}
		if (set.add("japan")) {
			System.out.println("japan 추가 성공");
		} else {
			System.out.println("japan 추가 실패");
		}
		if (set.add("america")) {
			System.out.println("america 추가 성공");
		} else {
			System.out.println("america 추가 실패");
		}
		if (set.add("britain")) {
			System.out.println("britain 추가 성공");
		} else {
			System.out.println("britain 추가 실패");
		}
		if (set.add("korea")) {
			System.out.println("두 번째 korea 추가 성공");
		} else {
			System.out.println("두 번째 korea 추가 실패");
		}

		Iterator it = set.iterator(); // set 기능 중 iterator 사용
										// Iterator은 자바 컬렉션의 하나에 인터페이스입니다.

		while (it.hasNext()) { // set에 요소가 있을 때까지 반복
			System.out.println(it.next()); // set 요소를 하나씩 출력
		}
	}

}

출력 결과:
첫 번째 korea 추가 성공
japan 추가 성공
america 추가 성공
britain 추가 성공
두 번째 korea 추가 실패
korea
britain
japan
america


2) TreeSet

TreeSet은 HashSet과 마찬가지로 중복을 허락하지 않지만 순서가 있는 Set입니다. (TreeSet을 더 자세히 알고 싶으면 이진 검색 트리를 검색해서 보시면 됩니다!)

import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class SetTest01 {

	public static void main(String[] args) {

		Set<String> treeset = new TreeSet<>();

		if (treeset.add("korea")) {
			System.out.println("첫 번째 korea 추가 성공");
		} else {
			System.err.println("첫 번째 korea 추가 실패");
		}
		if (treeset.add("japan")) {
			System.out.println("japan 추가 성공");
		} else {
			System.out.println("japan 추가 실패");
		}
		if (treeset.add("america")) {
			System.out.println("america 추가 성공");
		} else {
			System.out.println("america 추가 실패");
		}
		if (treeset.add("britain")) {
			System.out.println("britain 추가 성공");
		} else {
			System.out.println("britain 추가 실패");
		}
		if (treeset.add("korea")) {
			System.out.println("두 번째 korea 추가 성공");
		} else {
			System.out.println("두 번째 korea 추가 실패");
		}

		Iterator it = treeset.iterator(); // set 기능 중 iterator 사용
											// Iterator은 자바 컬렉션의 하나에 인터페이스입니다.

		while (it.hasNext()) { // set에 요소가 있을 때까지 반복
			System.out.println(it.next()); // set 요소를 하나씩 출력
		}
	}

}

출력 결과:
첫 번째 korea 추가 성공
두 번째 korea 추가 실패
japan 추가 성공
america 추가 성공
britain 추가 성공
america
britain
japan
korea

728x90

'자바(java)' 카테고리의 다른 글

[java] 롬복 lombok 이란?  (0) 2022.06.16
[java] 자바 java Iterator  (0) 2022.06.15
[java] List 종류와 정리  (0) 2022.03.31
[java] Map 종류와 정리  (0) 2022.03.29
[java] stream API 예제  (1) 2021.01.24
Comments