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)
I think zippingFunction
需要返回一个映射条目,但没有可公开构造的列表条目。因此,我可以编写的“最”实用的方法是使用一个压缩函数,该函数返回一个 Pair(我不确定 Guava 中是否存在),或者返回一个二元素列表(这是一个可变类型,在此处不正确表示)正好是 2 个元素。
如果我可以创建一个地图条目,这将是理想的:
Streams.zip(keys, values, zippingFunction)
.collect(toImmutableListMultimap(e -> e.getKey(), e.getValue())
这似乎是最好的方法,但它是不可能的,并且压缩到条目中并从条目中解压缩仍然看起来很迂回。有没有办法让这成为可能或者可以改进?
如果您的列表是随机访问的,则无需压缩即可完成:
Map<Key, Value> map = IntStream.range(0, Math.min(keys.size(), values.size()))
.boxed()
.collect(toImmutableListMultimap(i -> keys[i], i -> values[i]));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)