java - 使用 Java 流将列表转换为映射

标签 java java-stream

我的代码中重复了以下模式:

class X<T, V>
{
    V doTransform(T t) {
        return null; // dummy implementation
    }

    Map<T, V> transform(List<T> item) {
        return item.stream().map(x->new AbstractMap.SimpleEntry<>(x, doTransform(x))).collect(toMap(x->x.getKey(), x->x.getValue()));
    }
}

要求使用 AbstractMap.SimpleEntry 是困惑和笨拙的。 Linq 对匿名类型的使用更加优雅。

是否有更简单的方法使用流来实现此目的?

提前致谢。

最佳答案

您可以在值映射器中调用doTransform:

Map<T, V> transform(List<T> item) {
    return item.stream().collect(toMap(x -> x, x -> doTransform(x)));
}

关于java - 使用 Java 流将列表转换为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671112/

相关文章:

java - 插入排序字符串

Java - If 语句 if Both 和 Each

java - 将 Ajax 与 Spring Portlet 结合使用

java - 一个使用Java音频?

java - 使用JavaFX打包器时向wix添加扩展库?

Java8 lambda 将 List 转换为 Map of Maps

java-8 - 在 Java 8 中找出两个集合之间的区别?

java - 是否有等同于 Scala 集合 "collect"的 Java Stream 方法?

java - 使用java 8流转换为大写字母

java - 为什么 Eclipse 不显示流的泄漏警告?