Dav*_*les 4 list linkedhashmap vavr
是否有一种简洁,惯用的方式来创建来自Javaslang/Vavr的订单保留地图List?List.toMap()返回一个普通的HashMap,所以不这样做.我现在拥有的是这样的 -
listOfKeys.foldLeft(
LinkedHashMap.<Key, Value>.empty(),
(m, k) -> m.put(k, valueFor(k))
);
Run Code Online (Sandbox Code Playgroud)
- 但这似乎比必要的更冗长,也可能效率更低.
的Value.collect方法(通过继承List)通常用于此目的,其类似于在Java 8流的collect方法.收集器需要执行可变减少(请参阅注释).Vavr LinkedHashMap提供了一个静态collector()方法,因此你可以使用它来获取一个收集到一个收集器的实例LinkedHashMap.
listOfKeys.map(key -> new Tuple2<>(key, valueForKey(key)))
.collect(LinkedHashMap.collector());
Run Code Online (Sandbox Code Playgroud)
我不确定它与你的解决方案相比会如何表现,我认为它不会在性能方面有所不同,但作为额外的奖励,它与JDK收集器兼容,因此你可以使用它来收集到JDK集合容易.
*请注意,由于Vavr集合是不可变的,因此在此上下文中可变减少实际上不可变.