我有一份未分级的物品清单,我希望将它们分成5折。目前,我已经做到了,因为我只是尝试均匀地分割成多个块,而最后一个被称为“扩展”块,这给我带来了麻烦。
当我有nonRatedItems = {1,2,3,4,5,6,7,8}
时,这些块是:
1
2
3
4
5 6 7 8
我想避免这种情况,以便输出为:
1 6
2 7
3 8
4
5
当前来源:
Collections.shuffle(nonRatedItems);
nonRatedItems = nonRatedItems.subList(0, (int) Math.ceil(nonRatedItems.size() * 0.2));
int tfoldSize = nonRatedItems.size() / 5;
List<List<Integer>> negativeTestFolds = new ArrayList<List<Integer>>();
if (tfoldSize < 1) {
nonRatedItems.stream().map(Lists::newArrayList).collect(Collectors.toCollection(() -> negativeTestFolds));
} else {
for (int i = 0; i < 5; i++) {
int endIndex = i < 4 ? (i + 1) * tfoldSize : nonRatedItems.size();
negativeTestFolds.add(nonRatedItems.subList(i * tfoldSize, endIndex));
}
}
任何建议/帮助表示赞赏
最佳答案
总是5折吗?
为什么不循环列表?就像是
List<Integer>[] folds = new List<Integer>[5];
for(int i = 0; i < 5; i++)
{
folds[i] = new LinkedList<Integer>();
}
for (int i = 0; i < nonRatedItems.size(); i++)
{
folds[i % 5].add(nonRatedItems.get(i));
}