gpt4 book ai didi

java - 列表分区

转载 作者:行者123 更新时间:2023-12-02 13:09:07 25 4
gpt4 key购买 nike

我需要获取图书列表中 20% 的内容,并将它们分成 5 份。目前,做了以下工作

List<Integer> nonRatedBooks= allBookIDs;
Collections.shuffle(nonRatedBooks);
nonRatedBooks= nonRatedBooks.subList(0, (int) Math.ceil(nonRatedBooks.size() * 0.2));
int foldSize = (int) Math.ceil((float)nonRatedBooks.size() / 5);
List<List<Integer>> testFolds = Lists.partition(nonRatedBooks, foldSize);

问题是,例如,当我有一个 nonRatedBooks.size()=6 (获取子列表后),然后 foldsize=2testFolds.size()=3,因为Lists.partition会分成大小为2的折叠。我该怎么做,这样总是有5个折叠?

最佳答案

这应该适合你:

// get your 20% first
int chunk = nonRatedBooks.size() / 5;
List<List<Integer>> result = new LinkedList<List<Integer>>();
if (chunk < 1) {
nonRatedBooks.stream().map(Lists::newArrayList).collect(Collectors.toCollection(() -> result));
} else {
for (int i = 0; i < 5; i++) {
int endIndex = i < 4 ? (i + 1) * chunk : nonRatedBooks.size();
result.add(nonRatedBooks.subList(i * chunk, endIndex));
}
}

Lists.partition 对于您的情况不是最好的解决方案,因为它会破坏您的列表,具体取决于不同的分区大小。

关于java - 列表分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44022957/

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