gpt4 book ai didi

java - 从一百万条记录中获取前 10 条和后 10 条

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

我有一份显示 2-400 万条记录的报告。我将记录从 oracle 获取到 java 并将其推送到 Excel 报告。这一切都已经完成了!

现在,我还需要添加一个包含前 10 条和最后 10 条记录的新选项卡。最好的方法是什么?

我应该使用 java 中的 PriorityQueue 实现还是使用二叉树来跟踪前 10 条和后 10 条。我不需要在数据结构中存储数十亿条记录。我只需要一次存10个。例如:

PriorityQueue<DataObject> queueTop10 = new PriorityQueue<DataObject>(10, topComparator);
PriorityQueue<DataObject> queueLast10 = new PriorityQueue<DataObject>(10, leastComparator);
while (data is coming from database)
{
// push to excel stuff here
queueTop10 .add(dataObject); OR binarytreeTop.insert(dataObject)
queueLast10.add(dataObject); OR binarytreeLeast.insert(dataObject)
}

如果我也可以使用其他数据结构,请告诉我。

谢谢

最佳答案

热门算法使用最小堆(Java 中的 PriorityQueue),但您的算法中应该进行一些大小检查。假设每个项目都有一个分数,并且您想要收集得分最高的 10 个项目。 PriorityQueue 有效地公开得分最低的项目:

PriorityQueue<DataObject> top = new PriorityQueue(10, comparator);
for (DataObject item : items) {
if (top.size() < 10) top.add(item);
else if(comparator.compare(top.peek(), item) < 0) {
top.remove();
top.add(item);
}
}

关于java - 从一百万条记录中获取前 10 条和后 10 条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173013/

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