Java 排序(mList,comparator)需要很长时间,这取决于comparator
我有大约2000张关于音乐列表的唱片。 比如说,每个音乐对象都包含标题和艺术家 大约需要130~150ms 但是 需要600~1500毫秒 我真的想不出原因。标题和艺术家都是字符串类型。长度各不相同。此外,实例化这些比较器都花费了<0毫秒的时间 有人有类似的经历吗Java 排序(mList,comparator)需要很长时间,这取决于comparator,java,sorting,Java,Sorting,我有大约2000张关于音乐列表的唱片。 比如说,每个音乐对象都包含标题和艺术家 大约需要130~150ms 但是 需要600~1500毫秒 我真的想不出原因。标题和艺术家都是字符串类型。长度各不相同。此外,实例化这些比较器都花费了
顺便说一句,这是安卓上的。我猜这是数据本身的性质 在您的数据中,当按标题排序时,比较可能较少,而对于作者,比较可能更多。这是因为标题更独特 如果您有两个相当相同的字符串,它将逐个字符比较每个字符串,直到它认为其中一个大于或小于另一个或相等
所以当你有很多相同的字符串,比如说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));