본문 바로가기

Java/본격 Java 컬렉션

[Java] Enumeration(열거형)

Enumeration은 배열같으면서도 Map이랑 비슷한 느낌도 있다.

사용법을 알아보자

.

.

enum Direction {
	EAST, SOUTH, WEST, NORTH
}

public class EnumEx1 {

	public static void main(String[] args) {
		Direction d1 = Direction.EAST;
		Direction d2 = Direction.valueOf("WEST"); // 문자열을 Direction타입의 값으로 변환
		// Integer k = Integer.valueOf("1");
		Direction d3 = Direction.EAST;

		System.out.println("d1 = " + d1);
		System.out.println("d2 = " + d2);
		System.out.println();

		System.out.println("d1 == d2 ? " + (d1 == d2));
		System.out.println("d1 == d3 ? " + (d1 == d3));
		System.out.println("d1.equals(d3) ? " + d1.equals(d3));
		System.out.println("d1.compareTo(d3) ? " + d1.compareTo(d3));
		System.out.println();

		switch (d1) {
		case EAST:
			System.out.println("방향이 동쪽입니다. \n");
			break;
		case SOUTH:
			System.out.println("방향이 북쪽입니다. \n");
			break;
		case WEST:
			System.out.println("방향이 서쪽입니다. \n");
			break;
		case NORTH:
			System.out.println("방향이 남쪽입니다. \n");
			break;
		default:
		}
		
		// 열거형의 모든 값을 얻어온다.
		Direction[] arr = Direction.values();
		for(Direction d : arr) {
			System.out.printf("%s = %d \n", d.name(), d.ordinal());
		}
		
	}

}

.

.

간단하게 배열이랑 비슷하다고 생각할 수 있다. 하지만 클래스처럼 사용도 가능하다.

.

.

또한 각 열거형 이름에 값을 정해줄 수도 있다.

.

.

enum Direction2{
	EAST(1), SOUTH(5), WEST(-1), NORTH(10);
	
	private final int value;
	
	Direction2(int value){
		this.value = value;
	}
	
	public int getValue() {
		return value;
	}
}

public class EnumEx2 {

	public static void main(String[] args) {
		Direction2 d1 = Direction2.EAST;
		
		System.out.printf("d1 = %s, value = %d, ordinal = %d\n", d1.name(), d1.getValue(), d1.ordinal());

	}

}

.

.

enum 안에서도 메소드를 선언할 수 있다.

.

.

각 값에 따로 숫자를 정해줄 수 있다.

728x90
반응형