【发布时间】:2018-08-22 01:00:13
【问题描述】:
for 循环看起来像
ImmutableListMultiMap.<Key, Value>Builder builder
= ImmutableListMultiMap.<Key, Value>newBuilder();
for (int i = 0; i < Math.min(keys.length(), values.length()); i++) {
builder.put(keys.at(i), values.at(i));
}
Guava / Java 8 可能的第一步是
Streams.zip(keys, values, zippingFunction)
我认为zippingFunction 需要返回一个地图条目,但没有可公开构造的列表条目。所以我可以写这个的“最”功能的方式是使用返回一个 Pair 的压缩函数,我不确定它是否存在于 Guava 中,或者返回一个二元素列表,这是一个不正确的可变类型。正好是 2 个元素。
如果我可以创建地图条目,这将是理想的:
Streams.zip(keys, values, zippingFunction)
.collect(toImmutableListMultimap(e -> e.getKey(), e.getValue())
这似乎是最好的方法,但它是不可能的,并且压缩到条目和从条目中解压缩仍然似乎是迂回的。有没有办法让这成为可能或可以改进?
【问题讨论】:
-
在尝试组合地图和流时,通常需要这种迂回。但是
Maps::immutableEntry在这里的配对功能还不错。
标签: java java-8 functional-programming guava multimap