Java ObjectArrayList优于ArrayList的首选用法
我对Java非常陌生。我最近遇到了fastutil,发现了ObjectArrayList类Java ObjectArrayList优于ArrayList的首选用法,java,fastutil,Java,Fastutil,我对Java非常陌生。我最近遇到了fastutil,发现了ObjectArrayList类 如果使用ObjectArrayList而不是ArrayList,性能会有什么不同吗?使用ObjectArrayList的用例有哪些?当您开始学习一门新语言时,不应该关心性能。关注基础。编写运行的代码,然后编写有用的代码。只有当您编写的代码影响到您周围的世界(例如为工作编写代码)时,速度和效率才重要。不要担心fastutil和ObjectArrayList。使用ArrayList完成你的应用程序,如果你的应
如果使用ObjectArrayList而不是ArrayList,性能会有什么不同吗?使用ObjectArrayList的用例有哪些?当您开始学习一门新语言时,不应该关心性能。关注基础。编写运行的代码,然后编写有用的代码。只有当您编写的代码影响到您周围的世界(例如为工作编写代码)时,速度和效率才重要。不要担心fastutil和ObjectArrayList。使用ArrayList完成你的应用程序,如果你的应用程序对你来说太慢,那么你应该找到更快的应用程序。根据fastutil 基于类型特定数组的列表;提供一些使用多态性避免(取消)装箱的附加方法 在发生以下情况时,fastutil的实现具有性能优势
ObjectArrayList
由泛型类型数组支持。而ArrayList
是由Object[]
支持的,实际上,两者之间的性能是正常的。然而,FWIW看起来像是这个库提供了原始支持的数组IntArrayList
DoubleArrayList
,这些装箱声明实际上可以在大型数据集中看到明显的好处
但是,如果您是Java新手。我强烈建议在寻找其他变体之前先熟悉它。在大多数情况下,采用标准比性能优势更重要。不过,这似乎是一个虚假的说法。你能举一个例子说明ArrayList会使用装箱,而ObjectArrayList不会使用装箱的情况吗。。。不能使用基元创建ArrayList<代码>阵列列表。。。这意味着list.add(1)将别无选择,只能自动装箱。我还没有仔细阅读源代码和参考他们的文档。所以这个声明当然可能是假的,但同样的规则也适用于ObjectArrayList。谢谢各位的回复。但是我真的在看fastutils可能做的任何特别的事情,因为ArrayList已经存在了。更新的答案回答了ObjectArrayList和ArrayList之间的差异我有使用Java的语言限制。而且我处理的时间预算非常有限——在150微秒之内。无论如何,我都在使用基准测试工具(比如JMH)对其进行评估,但我想知道是否有人知道fastutil将推出自己版本的ArrayList的原因