본문 바로가기
JAVA/개념

[ 개념 ] 자바 set 사용법 출력 정렬 - JAVA

by hak0205 2023. 3. 6.
반응형

set 이란

자바에서 집합은 중복 요소를 허용하지 않는 Collection입니다. set 인터페이스는 HashSet, TreeSet, LinkedHashSet을 포함한 자바의 여러 클래스에 의해 구현됩니다.

 

set 특징

  1. 중복 요소를 허용하지 않음 : set에는 중복 요소를 포함할 수 없습니다. set에 이미 존재하는 요소를 추가하려고 하면 무시됩니다.
  2. 순서 없음 : set은 요소의 순서를 보장하지 않습니다. 시간이 지남에 따라, 특히 HashSet의 경우 순서가 변경될 수 있습니다.
  3. 빠른 액세스 시간 : set은 해시 테이블 또는 트리 구조를 사용하여 요소를 저장하므로 요소에 대한 빠른 액세스 시간을 제공합니다.
  4. Indexing 없음 : set은 Array, List과 같은 인덱싱을 제공하지 않습니다. 인덱스를 사용하여 요소에 액세스 할 수 없습니다. 즉, 배열(array)처럼 set[0], set[1] 존재하지 않습니다.
  5. primitive type 없음 : set은 객체만 저장하고 primitive type은 저장하지 않습니다. Integer, Float, Double 등의 wrapper 클래스를 사용해야 합니다. 즉, byte, short, int, long, float, double, char, boolean은 set에서 사용할 수 없습니다.

set 사용법

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

public class SetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        // set에 요소를 추가합니다.
        set.add("apple");
        set.add("banana");
        set.add("orange");
        set.add("apple"); //apple이 set에 이미 존재하므로 무시됩니다.

        System.out.println(set); // [banana, orange, apple] 순서가 없는 set의 요소를 나타냅니다.
 		                        
    }
}

 

set 출력 예제

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

public class SetExample {
    public static void main(String[] args) {
        Set<String> colors = new HashSet<>();
        colors.add("red");
        colors.add("blue");
        colors.add("green");

        for (String color : colors) {
            System.out.println(color);
        }
    }
}

이 예에서는 color이라는 문자열의 HashSet을 만들고 red, blue, green 값을 추가합니다. 그런 다음 향상된 for문을 활용하여 출력을 합니다. 출력은 순서대로 되지 않을 수 있습니다.

 

set 입력 예제 

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class SetExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

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

        while (true) {
            String input = scanner.nextLine();
			
            /* done을 입력하면 입력을 종료합니다.*/
            if (input.equals("done")) {
                break;
            }

            colors.add(input);
        }

        for (String color : colors) {
            System.out.println(color);
        }
    }
}

 

이 예제에서는 colors이라는 String의 HashSet을 만들고 while 루프를 사용하여 사용자에게 Sanner클래스를 사용하여 colors을 입력하도록 반복적으로 요청합니다. nextLine 메서드를 사용하여 사용자로부터 input을 읽고 문자열 변수에 저장합니다. 사용자가 "done"를 입력하면 while문을 종료하고 그렇지 않으면 추가 메서드를 사용하여 입력을 Set에 추가합니다. 출력은 순서대로 되지 않을 수 있습니다.

set 정렬 방법 예제

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {
    public static void main(String[] args) {
        Set<String> colors = new HashSet<>();
        colors.add("red");
        colors.add("blue");
        colors.add("green");
      
        // HashSet에서 TreeSet를 만들어 요소를 정렬합니다
        Set<String> sortedColors = new TreeSet<>(colors);

        System.out.println("The sorted set contains the following colors:");
        for (String color : sortedColors) {
            System.out.println(color);
        }
    }
}

 

colors이라는 String의 HashSet을 만들고 여기에 red, blue, green를 추가합니다. 그런 다음 HashSet를 TreeSet 생성자에게 인수로 전달하여 HashSet에서 TreeSet을 생성합니다. 이것은 HashSet와 동일한 요소를 포함하지만 자연적인 순서로 정렬된 새로운 집합을 만듭니다. (즉, 문자열의 경우 알파벳 순, 숫자인 경우 오름차순으로 정렬됩니다.)

 

정리를 하면 Set의 값을 treeSet에 새롭게 생성하여 정렬하면 됩니다.

 

set에 대해서 알아보고 특징, 사용법, 출력, 입력, 정렬 등에 대해서 알아봤습니다.

감사합니다.

 

 
반응형

댓글