更新进度条时对集合进行排序的最佳方法是什么?目前我的代码如下:
for (int i = 0; i < items.size(); i++)
{
progressBar.setValue(i);
// Uses Collections.binarySearch:
CollectionUtils.insertInOrder(sortedItems, item.get(i));
}
Run Code Online (Sandbox Code Playgroud)
这显示了进度,但随着项目数量的sortedItems增加,进度条减慢.有没有人有更好的方法?理想情况下,我想使用类似的界面,Collections.sort()以便尝试不同的排序算法.
任何帮助都会很棒!
作为一些背景知识,这段代码从Lucene中撤回了大量文档(1-10百万个)并在它们上面运行自定义比较器.通过将数据写回磁盘来对它们进行排序将太慢而不实用.大部分成本是从磁盘上读取项目,然后在项目上运行比较器.我的电脑有大量内存,所以没有与交换到磁盘等有关的问题.
最后我选择了Stephen的解决方案,因为它非常干净,并允许我轻松添加多线程排序算法.