Java 8 List 到Map

问题:

我想使用Java 8的流和lambdas将对象列表翻译成Map。
这就是我将如何在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羊羔。

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

回答:

基于Collectors documentation,它很简单:

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Java 8 List into Map

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 33 = 40