Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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_Android_Performance - Fatal编程技术网

Java 将整数ArrayList作为额外目的发送的最佳方式?

Java 将整数ArrayList作为额外目的发送的最佳方式?,java,android,performance,Java,Android,Performance,哪一种更有效,将ArrayList作为额外目的发送,还是使用toArray()方法将ArrayList转换为和整数数组,然后使用putinArrayExtra()发送 例: 或: putintarayextra不存在-我猜您的意思是putExtra(String,int[]) 当您调用这些方法时,它们都应该具有相同的运行时,因为它们都可以归结为Android源代码Bundle.java中的相同行: //mMap is of type ArrayMap - also in the Android

哪一种更有效,将ArrayList作为额外目的发送,还是使用toArray()方法将ArrayList转换为和整数数组,然后使用putinArrayExtra()发送

例:

或:


putintarayextra
不存在-我猜您的意思是
putExtra(String,int[])

当您调用这些方法时,它们都应该具有相同的运行时,因为它们都可以归结为Android源代码Bundle.java中的相同行:

//mMap is of type ArrayMap - also in the Android source
mMap.put(key, value);
也就是说,你所要求的“效率”几乎不足以给出准确的答案。ArrayList占用更多内存,序列化和反序列化速度较慢,具有自定义(非常量时间…但更精确!)
hashcode()
实现等


但是,最终它取决于在创建此意图之前以及在另一端检索此意图之后,您对该数组(列表或非列表)所做的操作。如果可能,将数据结构作为int[]开始(因此永远不要调用
ToInArray()
),除非您需要
ArrayList
提供的帮助方法/细节。

我怀疑这两种实现中的任何一种都比另一种快得多。如果您试图优化您的应用程序,您应该使用。它将向您显示应用程序在哪里花费的时间最多,甚至可能没有将整数打包成一个意图。我不同意
每一个最终归结为相同的行。此行只是该变量的临时存储。后者被序列化,以便将其传输到意图的接收端。它实际上归结为捆绑包的writeToParcel,这反过来又导致
Parcel.writeValue
int[]
转到
writeInArray
,而
List
转到write List,然后转到
writeInt
。最后,使用
列表
会带来很大的开销,因为每个值都以值的类型作为前缀,导致序列化的值增加了约两倍。因此,我在前面说过,“调用方法时的运行时间相同”然后接着介绍了使用ArrayList的注意事项-包括序列化。我同意您随后的分析,但我认为强调
putExtra
调用是误导性的。
Intentname.putIntArrayExtra(ArrayList.toIntArray());
//mMap is of type ArrayMap - also in the Android source
mMap.put(key, value);