Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 基元数组与ArrayList_Java_Arrays_Arraylist - Fatal编程技术网

Java 基元数组与ArrayList

Java 基元数组与ArrayList,java,arrays,arraylist,Java,Arrays,Arraylist,我正在接收XML,需要转换为原始数组或ArrayList。 内存和垃圾收集在性能方面有很大差异吗? 我的应用程序将每秒创建数千个这样的对象,我需要最小化GC,因为我需要实时性能 Thxs基元数组效率更高,因为它们不需要包装器对象。拥有由基元数组支持的列表实现(示例:),也许这对您来说是一个合理的解决方案:获得集合的强大功能,但仅在实际需要时使用对象。正如肖恩·帕特里克·弗洛伊德指出的,基元数组效率更高。 然而,在某些情况下,人们肯定更喜欢收藏。但是,只要您只是在对象上迭代,就不需要集合。基元数组

我正在接收XML,需要转换为原始数组或ArrayList。 内存和垃圾收集在性能方面有很大差异吗? 我的应用程序将每秒创建数千个这样的对象,我需要最小化GC,因为我需要实时性能


Thxs

基元数组效率更高,因为它们不需要包装器对象。拥有由基元数组支持的列表实现(示例:),也许这对您来说是一个合理的解决方案:获得集合的强大功能,但仅在实际需要时使用对象。

正如肖恩·帕特里克·弗洛伊德指出的,基元数组效率更高。
然而,在某些情况下,人们肯定更喜欢收藏。但是,只要您只是在对象上迭代,就不需要集合。

基元数组总是更有效,但效率的高低取决于用例的确切细节。我最近在最内部的循环中删除了ArrayList,并用基本数组替换它们,从而将性能提高了7倍。该用例是一个应用于100-1000个字符长的列表的O(n^2)算法。然后,我做了一个对照实验,比较int[]数组和ArrayList的性能,有趣的是,随着数组/列表大小的增大,JIT编译器似乎开始发挥作用,性能损失也会减少很多(只有约20%)。但对于小于500的列表,ArrayList的性能损失可能高达10倍。因此,如果您有一个经常调用的方法,即处理大量小列表或数组(就像我的用例一样),那么使用基本数组会对性能产生很大影响。

链表适合插入/删除,数组适合于随机访问。

这可能会回答您的问题:Guava列表实现不也是包装对象吗?您有关于它们的效率的定量详细信息吗?@TedHopp是的,每个数组一个包装对象,但不是每个数组一个element@DD.不,但是你可以问问guava邮件列表上的谷歌人“_,但不是每个数组元素一个”-ArrayList没有这样的每个元素的对象开销。我相信,它们与原始数组一样节省空间(顺便说一下,原始数组也是包含连续引用块和计数的包装器对象)。