gpt4 book ai didi

list - 列表中的 Javaslang/Vavr LinkedHashMap

转载 作者:行者123 更新时间:2023-12-02 20:46:04 25 4
gpt4 key购买 nike

是否有一种简洁、惯用的方法来从 Javaslang/Vavr List 创建顺序保留映射? List.toMap() 返回一个普通的 HashMap,所以这并不能实现。我现在拥有的是这样的东西——

listOfKeys.foldLeft(
LinkedHashMap.<Key, Value>.empty(),
(m, k) -> m.put(k, valueFor(k))
);

--但这似乎比必要的更冗长,而且可能效率也较低。

最佳答案

Value.collect方法(继承自 List)通常用于此目的,类似于 Java 8 Stream 的 collect方法。它需要一个收集器来执行可变缩减(参见注释)。瓦弗LinkedHashMap提供静态 collector()方法,因此您可以使用它来获取收集器的实例,该收集器将收集到 LinkedHashMap

listOfKeys.map(key -> new Tuple2<>(key, valueForKey(key)))
.collect(LinkedHashMap.collector());

我不确定它与你的解决方案相比表现如何,我不认为它在性能上会有差异,但作为一个额外的好处,它与 JDK 收集器兼容,所以你可以用它来收集轻松添加到 JDK 集合。

* 请注意,由于 Vavr 集合是不可变的,因此可变归约在此上下文中实际上并不可变。

关于list - 列表中的 Javaslang/Vavr LinkedHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44187725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com