gpt4 book ai didi

java - 可以确定 Java 比较器的进度吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:39 25 4
gpt4 key购买 nike

我正在使用 Comparator 实现对大量对象进行排序。根据此集合中对象的类型,排序需要几毫秒到半分钟。 有什么方法可以在排序时确定 Comparator 的进度吗?我想为用户可视化。

Collections.sort(sorted, new Comparator<Object[]>() {
public int compare(Object[] o1, Object[] o2) {
/* do it... */
return order;
}
}

该集合可能包含简单的短字符串对象、日期对象或(最坏情况)需要在排序时获取数据的 CLOB 对象。

最佳答案

您可以通过编写一个计算“全局”变量的比较器来做到这一点。

但是为了分析目的可视化进度,您必须复制您的列表,并对它进行两次排序。第一次确定比较器调用的次数。下次您知道自己已经走了多远时,通过将当前计数器与第一次排序的值进行比较。

当另一个线程正在排序时,您需要第二个线程来读取计数器。

另一种可能性是估计比较器调用的次数:平均而言,这可能与 n * ld (n) 有关。

然后再次计数,并从另一个线程读取。这样您只需排序一次。

关于java - 可以确定 Java 比较器的进度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13623131/

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