gpt4 book ai didi

Guava 的 ImmutableListMultimap 的 Java 8 收集器

转载 作者:行者123 更新时间:2023-12-01 16:51:05 25 4
gpt4 key购买 nike

寻找一种简单的方法来收集 KeyAndValues having fields - String and List<T> 的集合至ImmutableListMultimap<String,T> ? 尝试做类似的事情,

 Collector.of(
ImmutableListMultimap.Builder::new,
ImmutableListMultimap.Builder<String,List<T>>::putAll,
(b1, b2) -> b1.putAll(b2.build()),
(builder) -> builder.build());

putAll需要Key , List<T> 。我不知道如何在组合器中实现这一点。

编辑:

 @Value(staticConstructor = "of")
private static class KeyAndValues<T> {

private final String key;
private final List<T> values;
}

最佳答案

不确定 KeyAndValues<T> 上可用的方法,但是这个怎么样?

  public static <T> Collector<KeyAndValues<T>,
ImmutableListMultimap.Builder<String, T>,
ImmutableListMultimap<String, T>> toImmutableMultimap()
{
return Collector.of(
ImmutableListMultimap.Builder::new,
(b, kav) -> b.putAll(kav.getKey(), kav.getValues()),
(builder1, builder2) -> builder1.putAll(builder2.build()),
(builder) -> builder.build());
}

或者,如果您想隐藏累加器详细信息,您可以使用如下内容:

public static <T> Collector<KeyAndValues<T>,
?,
ImmutableListMultimap<String, T>> toImmutableMultimap()
{
return Collector.of(
ImmutableListMultimap.Builder<String, T>::new,
(b, kav) -> b.putAll(kav.getKey(), kav.getValues()),
(builder1, builder2) -> builder1.putAll(builder2.build()),
(builder) -> builder.build());
}

关于Guava 的 ImmutableListMultimap<String,T> 的 Java 8 收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008231/

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