반응형
Java의 모든 열거 형 값으로 목록 채우기
내가 열거의 모든 가능한 값 목록을 채우기 위해 싶습니다
나는 최근 사랑에 빠진 이후로 EnumSet
나는 활용,allOf()
EnumSet<Something> all = EnumSet.allOf( Something.class);
List<Something> list = new ArrayList<>( all.size());
for (Something s : all) {
list.add( s);
}
return list;
동일한 결과를 얻는 더 좋은 방법이 있습니까 (난독 화되지 않은 하나의 라이너에서와 같이)?
EnumSet이 더 적절하기 때문에 처음에는 List를 사용하지 않지만 할 수 있습니다.
List<Something> somethingList = Arrays.asList(Something.values());
또는
List<Something> somethingList =
new ArrayList<Something>(EnumSet.allOf(Something.class));
생성자 ArrayList
가 있습니다.
ArrayList(Collection<? extends E> c)
이제 EnumSet
확장 AbstractCollection
하여 할 수 있습니다.
ArrayList<Something> all = new ArrayList<Something>(enumSet)
List<SOME_ENUM> enumList = Arrays.asList(SOME_ENUM.class.getEnumConstants());
시험
enum E {
E1, E2, E3
}
public static void main(String[] args) throws Exception {
List<E> list = Arrays.asList(E.values());
System.out.println(list);
}
List<Something> result = new ArrayList<Something>(all);
EnumSet
Set
인터페이스를 구현하므로 Java 컬렉션입니다 .
public interface Set<E> extends Collection<E>
따라서 컬렉션으로 할 수있는 모든 작업은 EnumSet
.
이것은 좀 더 읽기 쉽습니다.
Object[] allValues = all.getDeclaringClass().getEnumConstants();
이 시도:
... = new ArrayList<Something>(EnumSet.allOf(Something.class));
로 ArrayList
와 생성자가 있습니다 Collection<? extends E>
. 그러나이 방법은 정말로 EnumSet
.
모든 열거 형은 메서드에 액세스 할 수 있습니다 values()
. 모든 열거 형 값의 배열을 반환합니다.
... = Arrays.asList(Something.values());
다음을 사용할 수도 있습니다.
Collections.singletonList(Something.values())
private ComboBox gender;
private enum Selgender{Male,Famle};
ObservableList<Object> observableList =FXCollections.observableArrayList(Selgender.values());
참고 URL : https://stackoverflow.com/questions/16149117/filling-a-list-with-all-enum-values-in-java
반응형
'developer tip' 카테고리의 다른 글
git 하위 모듈에 대한 새 커밋 무시 (0) | 2020.10.23 |
---|---|
문자열에서 마지막 단어 바꾸기-C # (0) | 2020.10.23 |
ng-show 및 ng-animate로 슬라이드 업 / 다운 효과 (0) | 2020.10.23 |
bind_result와 get_result를 사용하는 방법의 예 (0) | 2020.10.23 |
Swift에서 CGFloat 반올림 (0) | 2020.10.23 |