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
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
DEX를 Java 소스 코드로 디컴파일 (0) | 2021.08.20 |
---|---|
Java에서 String을 long으로 변환하는 방법 (0) | 2021.08.12 |
java.net.URLConnection을 사용하여 HTTP 요청을 실행하고 처리하는 방법 (0) | 2021.08.11 |
Java에서 폴더의 모든 파일을 읽는 방법 (0) | 2021.08.04 |
Java를 사용하여 줄 단위로 큰 텍스트 파일을 읽는 방법 (0) | 2021.08.03 |