[자바] set(컬렉션)

컴공생의 코딩 일기·2021년 8월 9일
0

자바

목록 보기
10/10
post-thumbnail

목차

  • Set 이란?

  • Set 사용법

    • Set 기능
  • HashSet

    • HashSet 예제
  • TreeSet

    • TreeSet 예제

Set 이란?

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를 반환)

HashSet

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

HashSet 예제

꼭 알아야 하는 자바 programing 예제 
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

TreeSet

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

TreeSet 예제

꼭 알아야 하는 자바 programing 예제 (HashSet 부분을 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

HashSet은 출력 결과가 순서가 없고, TreeSet은 출력 결과가 순서가 있습니다.

이상으로 컬렉션의 Set 인터페이스에 대해 알아봤습니다. 잘못된 부분이나 부족한 부분 있으면 피드백 감사하겠습니다!!!

profile
더 좋은 개발자가 되기위한 과정

0개의 댓글