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);

  

 

}



'java core' 카테고리의 다른 글

java9에서 사라지는 gc  (0) 2017.03.20
jnr  (0) 2017.02.27
[java] Map을 출력하기  (0) 2016.12.13
자바의 clone, guava의 Maps, Lists 사용  (0) 2016.12.01
JVM의 safepoint  (0) 2016.09.08
Posted by '김용환'
,