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 |