Java Collections.rotate()实现算法
它对小列表使用杂耍算法,对大列表或链表使用反转算法。为什么不为小访问列表或随机访问列表使用块交换算法?在矢量的实验运行中,它的性能更好。我们无法告诉您为什么Java开发人员没有这样做:Java Collections.rotate()实现算法,java,algorithm,Java,Algorithm,它对小列表使用杂耍算法,对大列表或链表使用反转算法。为什么不为小访问列表或随机访问列表使用块交换算法?在矢量的实验运行中,它的性能更好。我们无法告诉您为什么Java开发人员没有这样做: 也许他们不知道你所说的绩效结果 也许他们知道,但不认为性能差异会很大(在所有Java用例中) 也许他们已经尝试过你的想法,但没有明显的好处 也许他们意识到了这个问题,但却把其他问题放在了更优先的位置 请记住,Java团队(主要)由Oracle雇用,Oracle管理层为Java的发展制定议程和优先级 如果你只
- 也许他们不知道你所说的绩效结果
- 也许他们知道,但不认为性能差异会很大(在所有Java用例中)
- 也许他们已经尝试过你的想法,但没有明显的好处
- 也许他们意识到了这个问题,但却把其他问题放在了更优先的位置
如果你只是出于好奇问这个问题,我们就到此为止 如果你问这个问题是因为你认为“应该做点什么”,那么我建议如下:
rotate()
对于各种集合类型、各种集合大小的性能。(使用JMH…)rotate()
这并不一定能达到您想要的结果,但它比提交RFE并依靠OpenJDK团队完成所有的工作更有可能成功 OracleJDK8声明
rotate()
方法从1.4开始就存在,并且Collections
类是由Josh Bloch和Neal Gafter编写的。我建议您仔细阅读1.4邮件列表,以找到当前实现的动机。感谢tipI,我们希望“我们不能告诉您为什么”回答,当然。实验运行的结果出现在Jon Bentley的“编程珍珠”中,直接出现在Collections.rotate()一节中方法参考建议查看详细信息。结果已记录。但是你告诉错人了。请看我的“如果你认为应该做点什么……”。