Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排序(mList,comparator)需要很长时间,这取决于comparator_Java_Sorting - Fatal编程技术网

Java 排序(mList,comparator)需要很长时间,这取决于comparator

Java 排序(mList,comparator)需要很长时间,这取决于comparator,java,sorting,Java,Sorting,我有大约2000张关于音乐列表的唱片。 比如说,每个音乐对象都包含标题和艺术家 大约需要130~150ms 但是 需要600~1500毫秒 我真的想不出原因。标题和艺术家都是字符串类型。长度各不相同。此外,实例化这些比较器都花费了

我有大约2000张关于音乐列表的唱片。 比如说,每个音乐对象都包含标题和艺术家

大约需要130~150ms

但是

需要600~1500毫秒

我真的想不出原因。标题和艺术家都是字符串类型。长度各不相同。此外,实例化这些比较器都花费了<0毫秒的时间

有人有类似的经历吗


顺便说一句,这是安卓上的。

我猜这是数据本身的性质

在您的数据中,当按标题排序时,比较可能较少,而对于作者,比较可能更多。这是因为标题更独特

如果您有两个相当相同的字符串,它将逐个字符比较每个字符串,直到它认为其中一个大于或小于另一个或相等


所以当你有很多相同的字符串,比如说10个字符串AA-其中-是一些随机的唯一字符,与我们有-AA相比,这10个字符串会有更多的比较,因为它可以立即确定它是否更大,而不是遍历整个字符串。

我的猜测是,这是数据本身的性质

在您的数据中,当按标题排序时,比较可能较少,而对于作者,比较可能更多。这是因为标题更独特

如果您有两个相当相同的字符串,它将逐个字符比较每个字符串,直到它认为其中一个大于或小于另一个或相等


所以当你有很多相同的字符串,比如说10个字符串AA-其中-是一些随机的唯一字符,与我们有-AA相比,这10个字符串会有更多的比较,因为它可以立即确定它是否更大,而不必遍历整个字符串。

所以@leeyuiwah在我的评论中是正确的

我补充说

long seed = System.nanoTime();
Collections.shuffle(mList, new Random(seed));
就在我调用集合之前。排序。。现在他们都有相似的时间

首先,我如何填充mList直接影响了排序机制

有一件事我应该考虑一下:


线程关闭。谢谢大家。

所以@leeyuiwah对我的评论是正确的

我补充说

long seed = System.nanoTime();
Collections.shuffle(mList, new Random(seed));
就在我调用集合之前。排序。。现在他们都有相似的时间

首先,我如何填充mList直接影响了排序机制

有一件事我应该考虑一下:


线程关闭。谢谢大家。

您的mList是否已经几乎按标题排序了?因此,第一类几乎没有什么工作要做,但第二类有很多工作要做。@leeyuwah。这可能是唯一的原因。“我会看看我是否能随机地把它混在一起,得到更好的分析结果。”PhilippClaßen很肯定不是这些。我确保将这一点与逻辑联系起来。我希望有人能解释为什么我应该获得否决票:谢谢。是不是你的mList已经几乎按标题排序了?因此,第一类几乎没有什么工作要做,但第二类有很多工作要做。@leeyuwah。这可能是唯一的原因。“我会看看我是否能随机地把它混在一起,得到更好的分析结果。”PhilippClaßen很肯定不是这些。我确保将这一点与逻辑联系起来。我希望有人能解释为什么我应该获得否决票:谢谢。谢谢@K Weston。数据集是相当通用的。这更多的是关于如何添加mList的数据集。请看一看我自己的答案。祝你有一个美好的一天哦,当然我同意这可以生效!啊,那是有道理的。回答得好!谢谢你@K韦斯顿。数据集是相当通用的。这更多的是关于如何添加mList的数据集。请看一看我自己的答案。祝你有一个美好的一天哦,当然我同意这可以生效!啊,那是有道理的。回答得好!
Collections.sort(mList, new MySongEntry.ArtistComparator());
long seed = System.nanoTime();
Collections.shuffle(mList, new Random(seed));