gpt4 book ai didi

Java 将集合拆分为通用基类型的相同大小的较小部分

转载 作者:行者123 更新时间:2023-12-02 03:09:52 26 4
gpt4 key购买 nike

我想将集合分成更小的分区。为此,我创建了以下方法:

/**
* Splits collection into smaller collections of given size
* @param c input collection
* @param partitionSize partition maximum size
* @return collection of collections
*/
private static Collection<Collection<MyClass>> splitCollection(Collection<MyClass> c, int partitionSize) {
List<Collection<MyClass>> result = new ArrayList<>();
List<MyClass> partition = new ArrayList<>();
for (MyClass o : c) {
if (partition.size() == partitionSize) {
result.add(partition);
partition = new ArrayList<>();
}
partition.add(o);
}
if (!partition.isEmpty()) {
result.add(partition);
}
return result;
}

现在我想创建一个通用(独立于基本类型)函数,以便能够调用如下内容:

 List<Collection<MyClass>> result = splitCollection(myClassList, 500, MyClass.class);
List<Collection<MyClass2>> result = splitCollection(myClass2List, 500, MyClass2.class);

但是如果我不想使用多态性(用对象替换我的类型),我该如何实现这一点?

最佳答案

你想要做的是使用 Generics :

private static <T> Collection<Collection<T>> splitCollection(Collection<T> c, int partitionSize) {
List<Collection<T>> result = new ArrayList<>();
List<T> partition = new ArrayList<>();
for (T o : c) {
if (partition.size() == partitionSize) {
result.add(partition);
partition = new ArrayList<>();
}
partition.add(o);
}
if (!partition.isEmpty()) {
result.add(partition);
}
return result;
}

然后你可以将其称为:

Collection<Collection<Integer>> lsts = splitCollection(Arrays.asList(1,2,3,4), 2);
Collection<Collection<String>> lsts = splitCollection(Arrays.asList("1","2","3","4"), 2);

关于Java 将集合拆分为通用基类型的相同大小的较小部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41207799/

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