Java Collections.rotate()实现算法

时间:2018-05-07 10:44:17

标签: java algorithm

它将Juggling Algorithm用于小型列表,并将逆向算法用于大型或链接列表。为什么不对小型或随机访问列表进行块交换算法?在矢量的实验运行中,它的性能更好。

1 个答案:

答案 0 :(得分:1)

我们无法告诉您为什么Java开发人员没有这样做:

  • 也许他们不知道你所谈论的表现结果
  • 也许他们知道,但不认为性能差异会很大(在所有Java用例中)
  • 也许他们已经尝试过你的想法而且没有显着的好处
  • 也许他们知道这个问题,但已经给予其他问题更高的优先权。

请记住,Java团队(主要)受雇于Oracle,Oracle管理层为Java的发展设定了议程和优先事项。

如果您只是出于好奇而问这个问题,我们可以在这里结束。

如果您因为认为“应该做某事”而提出此问题,那么我建议如下:

  1. 开发一个不错的微基准来测试rotate()对各种收集类型(各种收集大小)的性能。 (使用JMH ......)

  2. 对相关类进行代码修改,以“更好”的方式实施rotate()

  3. 对您的版本和现有版本进行基准测试并比较结果。

  4. 如果差异很大,请提交最新版本的OpenJDK补丁,以实现您的修改。将您的基准和结果作为支持证据包括在内。

  5. 这不一定能达到您想要的效果,但它比提交RFE并依赖OpenJDK团队完成所有工作更有可能取得成功。