자바 스터디

11주차 과제: Enum

삶은겨란 2022. 6. 11. 02:41

목표

자바의 열거형에 대해 학습하세요.

목차

1. enum 정의하는 방법

2. enum이 제공하는 메소드 (values()와 valueOf())

3. java.lang.Enum

4. EnumSet

 


1. enum 정의하는 방법

(1) enum(열거형)

서로 연관된 상수들의 집합

import java.util.Scanner;
enum season{spring, summer, fall, winter} // enum 정의

public class EnumTest {
    public static void main(String[] args) {
        int month;
        Scanner sc = new Scanner(System.in);
        month=sc.nextInt();

        if(month>=3&month<=5){
            System.out.println(season.spring);
        }
        else if(month>=6&month<=8){
            System.out.println(season.summer);
        }
        else if(month>=9&month<=11){
            System.out.println(season.fall);
        }
        else{
            System.out.println(season.winter);
        }

    }


}

 

 

2. enum이 제공하는 메소드 (values()와 valueOf())

메소드 내용
ordinal() 순서
valueOf() 일치하는 이름을 찾아 리턴
values() enum에 정의된 상수를 배열로
name() 이름
enum season{spring, summer, fall, winter} // enum 정의
public class ListNode {
    public static void main(String[] args) {
        System.out.println(season.winter.ordinal());
        for(var s : season.values()){
            System.out.println(s.name());
        }
        season same = season.valueOf("summer");
        System.out.println(same);
    }
}

 

 

3. java.lang.Enum

enum 클래스는 java.lang.Enum 클래스의 자손이다.

 

 

4. EnumSet

열거형을 위한 Set 인터페이스 구현체

 

특징(https://www.geeksforgeeks.org/enumset-class-java/)

  • AbstractSet 클래스를 상속하고 자바의 Set 인터페이스를 구현
  • EnumSet 클래스는  java collection frameword의 멤버이며 동기화되지 않는다.
  • 고성능 set 구현체이며 HashSet보다 빠르다.
  • EnumSet의 모든 요소는 set이 명시적, 암묵적으로 생성될 때 지정된 단일 열거형 타입에서 가져와야 한다.
  • null을 허용하지 않는다.

https://www.geeksforgeeks.org/enumset-class-java/

public abstract class EnumSet<E extends Enum<E>>

https://www.geeksforgeeks.org/enumset-class-java/

명품 JAVA Programming/황기태,김효수