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_Performance_Arraylist - Fatal编程技术网

是否有一个真实的java示例定义了何时使用一维数组而不是arraylist更好?

是否有一个真实的java示例定义了何时使用一维数组而不是arraylist更好?,java,arrays,performance,arraylist,Java,Arrays,Performance,Arraylist,我知道: 在一维数组和arraylist之间进行选择时,arraylist应始终是首选,但有一个主要例外;收集原始值时,效率是一个问题。 由于ArrayList在内部使用数组,因此在对对象类型执行操作时,高性能(在处理时间和内存占用方面)与数组类似。但是,在对基本类型(如int或long)进行操作时,ArrayList的性能会受到影响,因为ArrayList要求将所有元素包装在对象中(如Integer或long)。虽然自动装箱减少了包装和展开所需的代码量,但它不会消除性能问题,因为包装对象仍在创

我知道:

在一维数组和arraylist之间进行选择时,arraylist应始终是首选,但有一个主要例外;收集原始值时,效率是一个问题。 由于ArrayList在内部使用数组,因此在对对象类型执行操作时,高性能(在处理时间和内存占用方面)与数组类似。但是,在对基本类型(如int或long)进行操作时,ArrayList的性能会受到影响,因为ArrayList要求将所有元素包装在对象中(如Integer或long)。虽然自动装箱减少了包装和展开所需的代码量,但它不会消除性能问题,因为包装对象仍在创建中


但我正在寻找一个真实的例子,在这个例子中,我将收集原始值,效率是一个问题。你能想出一个吗。每个时间间隔有一个或多个传感器收集固定数量的数据值是很常见的。例如,想想每毫秒有数百个温度计收集温度。

但这并不是使用阵列的唯一原因

每当您需要一个固定大小、可索引的集合时,数组是一个更自然的选择。例如,如果您想存储IPv4地址,将字节存储在列表中而不是字节数组中会很尴尬。即使就性能而言,这可能并不重要

在引入泛型之前,数组是保证类型安全的唯一方法


如果您正在寻找效率是关键的示例,请只查看套接字/文件I/O。使用列表作为缓冲区而不是数组将非常无效。

或数学,其中您有一个双倍矩阵或向量,并希望以某种方式求和/聚合它们。这里的解装箱开销很大,有很多值。

通常在实现算法时,人们使用int/float而不是整数等。因此,数组是最佳选择。甚至效率也会提高

更多非技术性观察:


在学校/大学的最初几天,人们通过学习C开始编程。(一般观察……在100%的情况下无效)。使用数组解决问题的思维方式在我们的大脑中得到了训练,我们倾向于尝试使用数组。至少在对问题进行初步思考时,人们会根据数组进行思考。

每当我创建字节缓冲区时,我都会使用数组。如果您知道结构的确切大小(对于缓冲区,您可能应该知道),那么使用数组比使用集合更容易、更快。

我曾在一家生物信息公司工作,我们使用double[]来缓冲我们想要实时绘制的数据。我想很多图形工作都会使用基本数组。很多图形工作在处理基本数组时都会使用数组。我在一个物理引擎上工作(类似于Autocad w/simulation),由于速度的原因,我对所有迭代循环闭包算法都使用了double[]。这些算法需要每秒运行数千次,因此性能上的每一点改进都会有所帮助。您可以在创建数组后立即访问数组的任何索引。在数组列表中的索引处设置/获取元素需要在其中预加载元素,直到该索引。在
ArrayList内部
本身。;)当您想以
字节[]的形式读/写数据时