gpt4 book ai didi

java - 自动将多个集合合并为一个

转载 作者:行者123 更新时间:2023-12-01 06:35:32 24 4
gpt4 key购买 nike

我有一些 Guava Functions喜欢 Function<String,Set<String>> 。使用 FluentIterable.transform() 的那些导致 FluentIterable<Set<String>> ,但是我需要一个FluentIterable<String> 。所以我现在的想法是子类 FluentIterable<E>并添加一个新方法transform2()它只是在返回之前将所有内容合并到一个集合中。

原始的转换方法如下所示:

public final <T> FluentIterable<T> transform(Function<? super E, T> function) {
return from(Iterables.transform(iterable, function));
}

我为我的子类想到了类似的东西,transform2()方法:

public abstract class FluentIterable2<E> extends FluentIterable<E> 
{
public final <T> FluentIterable<T> transform2(Function<? super E, Collection<T>> function) {
// (PROBLEM 1) Eclipse complains: The field FluentIterable<E>.iterable is not visible
Iterable<Collection<T>> iterables = Iterables.transform(iterable, function);

// (PROBLEM 2) Collection<T> merged = new Collection<T>(); // I need a container / collection - which one?
for(Collection<T> iterable : iterables)
{
// merged.addAll(iterable);
}

// return from(merged);
}
}

目前我的新子类有两个问题,上面标有 PROBLEM 1PROBLEM 2

  • 问题 1:原始 FluentIterable 类中的可迭代字段是私有(private)的 - 我该怎么办?我可以在我的子类中创建一个具有相同名称的新私有(private)字段吗?这样可以吗?我的子类中调用 super.someMethod() 使用此字段的方法怎么样?然后他们会使用父类(super class)的字段吗?该字段可能具有不同的值?

  • 问题 2:我需要一些通用集合,可以将多个集合的内容组合在一起,但集合是一个接口(interface),因此我无法实例化它。那么,我可以在那里使用哪个类?

如果解决方案仅适用于集合,则可以接受,但我更喜欢适用于集合和列表的解决方案。

感谢您对此的任何提示!

最佳答案

FluentIterable.transformAndConcat(stringToSetFunction) 不适用于您的用例吗?

关于java - 自动将多个集合合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843045/

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