猿问

Java 8列表<V>到地图<K,V>

Java 8列表<V>到地图<K,V>

我希望使用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轻松地完成这一任务,但是我想知道如何在没有番石榴的情况下做到这一点。

在番石榴:

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, Choice::getName);}


繁花如伊
浏览 694回答 3
3回答

浮云间

基于Collectors文献资料它很简单,就像:Map<String,&nbsp;Choice>&nbsp;result&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;choices.stream().collect(Collectors.toMap(Choice::getName, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function.identity()));

当年话下

如果你的钥匙是不保证对列表中的所有元素都是唯一的,则应该将其转换为Map<String, List<Choice>>而不是Map<String, Choice>Map<String,&nbsp;List<Choice>>&nbsp;result&nbsp;= &nbsp;choices.stream().collect(Collectors.groupingBy(Choice::getName));

慕田峪7331174

这里还有一个,以防您不想使用Collection tors.toMap()Map<String,&nbsp;Choice>&nbsp;result&nbsp;= &nbsp;&nbsp;&nbsp;choices.stream().collect(HashMap<String,&nbsp;Choice>::new,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(m,&nbsp;c)&nbsp;->&nbsp;m.put(c.getName(),&nbsp;c), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(m,&nbsp;u)&nbsp;->&nbsp;{});
随时随地看视频慕课网APP

相关分类

Java
我要回答