프로그래밍 언어/JAVA

자바 8 List<V>를 Map<K, V>로 변환 하는 방법

Rateye 2021. 8. 12. 10:33
728x90
반응형
질문 : 자바 8 목록 지도로<K, V>

Java 8의 스트림과 람다를 사용하여 객체 목록을 맵으로 변환하고 싶습니다.

이것이 Java 7 이하에서 작성하는 방법입니다.

private Map<String, Choice> nameMap(List<Choice> choices) {
        final Map<String, Choice> hashMap = new HashMap<>();
        for (final Choice choice : choices) {
            hashMap.put(choice.getName(), choice);
        }
        return hashMap;
}

Java 8과 Guava를 사용하여 쉽게 수행 할 수 있지만 Guava없이 수행하는 방법을 알고 싶습니다.

구아바 :

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, new Function<Choice, String>() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }
    });
}

Java 8 람다가 포함 된 Guava.

private Map<String, Choice> nameMap(List<Choice> choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
답변

Collectors 문서 에 따르면 다음과 같이 간단합니다.

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));
출처 : https://stackoverflow.com/questions/20363719/java-8-listv-into-mapk-v
728x90
반응형