gpt4 book ai didi

java - 在 Java 的方法中将 Collection 的 Collection 联合成 Collection

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:24 32 4
gpt4 key购买 nike

我创建了一个 Collection 类,它扩展了 ArrayList 以添加一些有用的方法。它看起来像这样:

public class Collection<T> extends ArrayList<T> {
//some methods...
}

我希望能够将一个 Collection of Collections 合并为一个 Collection,就像这样:

{{1, 2}, {2,3}, {1}, {2}, {}} -> {1, 2, 2, 3, 1, 2}

我知道静态方法应该是什么样子:

public static<E> Collection<E> unite(Collection<Collection<E>> arr) {
Collection<E> newCollection = new Collection<>();

for(Collection<E> element : arr) {
newCollection.merge(element);
}

return newCollection;
}

但我不知道如何使这个方法成为非静态的(这样它就不会接受任何参数,就像这样:

Collection<E> list = listOfLists.unite();

)。这可能吗?如果是,你能帮我解决一下吗?

最佳答案

对任何具体类型都没有意义T .如果T不属于 Collection输入,然后 unite()是一个不相关的方法(如果你有一个 ArrayListModified<Double> ,例如,你不能将它展平,因为那很荒谬)。

所以你要么必须制作T绑定(bind)到集合:

public class ArrayListModified<E, T extends Collection<E>> extends ArrayList<T> {

public Collection<E> unite() {
Collection<E> newCollection = new ArrayList<>();

for (Collection<E> element : this) {
newCollection.addAll(element);
}

return newCollection;
}
}

或者使用一个接受一个 ArrayListModified<ArrayListModified<E>> 的静态方法参数就像您当前的实现一样(尽管它不需要是静态的)。

关于java - 在 Java 的方法中将 Collection 的 Collection 联合成 Collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54723301/

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