gpt4 book ai didi

Java:如何将特定对象的集合分成两个相等的部分?

转载 作者:行者123 更新时间:2023-11-30 06:18:58 25 4
gpt4 key购买 nike

我有一个对象集合:

Collection<MyRecord> myRecords

如何将此集合拆分为两个大小相等的不同集合?

编辑:

  • 我想根据记录数拆分集合,即,如果有 400 条记录,则应拆分为 2 个不同的集合,每个集合大小为 200。

  • 这是一个列表。

  • 不,顺序并不重要。

最佳答案

既然你说它是一个List,你可以使用subList()拆分它:

int midpoint = myRecords.size() / 2;
List<MyRecord> asList = (List<MyRecord>)myRecords;
List<MyRecord> part1 = asList.subList(0, midpoint);
List<MyRecord> part2 = asList.subList(midpoint, asList.size());
如果项目数量为奇数,

part1 将是较小的那个。要使 part2 更小,请将第一行更改为:

int midpoint = (myRecords.size() + 1) / 2;

请注意,子列表实际上是底层完整列表的 View 。如果您想断开连接(以减少内存占用或防止修改),您可以通过将它们分别复制到新列表来实现:

List<MyRecord> part1 = new ArrayList<>(asList.subList(0, midpoint));
List<MyRecord> part2 = new ArrayList<>(asList.subList(midpoint, asList.size()));

如果您想要一个适用于任何Collection类型的解决方案,则需要使用其Iterator:

List<MyRecord> part1 = new ArrayList<>();
List<MyRecord> part2 = new ArrayList<>();
Iterator<MyRecord> iter = myRecords.iterator();
for (int i = 0; iter.hasNext(); i++) {
(i < midpoint ? part1 : part2).add(iter.next());
}

关于Java:如何将特定对象的集合分成两个相等的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573722/

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