java core

enum 데이터를 리스트(list)로 얻기

'김용환' 2016. 12. 19. 20:03


enum를 리스트로 얻는 방법이다.


우선 enum에서 각 entry를 읽어오려면, enum 클래스의 values() 메소드를 호출한다.



java8 이전과 이후로 나눠진다. java8은 stream(Stream.of)으로 처리하기 쉽다.



enum Direction {

north,

east,

south,

west

}




              for (Direction direction : Direction.values()) {

System.out.println(direction);

}

for (Direction direction : EnumSet.allOf(Direction.class)) {

System.out.println(direction);

}

Stream.of(Direction.values()).forEach(System.out::println);




enum에 생성자를 주어 따로 상태(필드) 값을 가질 때, enum 이름과 상태 값을 다음과 같이 얻을 수 있다. 



enum Directions {

north(10),

east(12),

south(13),

west(14);

private int no;

private Directions(int number) {

this.no = number;

}

public int getNumber() {

return no;

}

}


// java 8 이전

List<String> list = Lists.newArrayList();

for (Directions directions : Directions.values()) {

list.add(directions.name());

}

System.out.println(list);

List<Integer> list1 = Lists.newArrayList();

for (Directions directions : Directions.values()) {

list1.add(directions.getNumber());

}

System.out.println(list1);

// java 8 이후

         List<String> list3 = Stream.of(Direction.values())

    .map(Enum::name)

    .collect(Collectors.toList());

 System.out.println(list3);

  

 List list4 = Stream.of(Directions.values())

    .map(m -> m.getNumber())

    .collect(Collectors.toList());

 System.out.println(list4);

  

 

}