Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 数组和数组列表-优缺点_Java_Arrays_Arraylist - Fatal编程技术网

Java 数组和数组列表-优缺点

Java 数组和数组列表-优缺点,java,arrays,arraylist,Java,Arrays,Arraylist,在Java中,有数组和ArrayList // Creation of Array of length 3 Object[] array = new Object[3]; // Creation of ArrayList ArrayList<Object> arrayList = new ArrayList<>(); //创建长度为3的数组 Object[]数组=新对象[3]; //ArrayList的创建 ArrayList ArrayList=新的ArrayLis

在Java中,有数组和ArrayList

// Creation of Array of length 3
Object[] array = new Object[3];

// Creation of ArrayList
ArrayList<Object> arrayList = new ArrayList<>();
//创建长度为3的数组
Object[]数组=新对象[3];
//ArrayList的创建
ArrayList ArrayList=新的ArrayList();
据我所知,数组和ArrayList之间存在某些差异。例如,可以轻松地将条目添加到ArrayList中,但不能使用数组

我发现的另一个区别是ArrayList不能包含原语为什么这很重要,因为我可以轻松地将int转换为整数对象

int[] array = {1,2,3}; // Can't add another entry.

ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);

arrayList.add(4); // Dynamic in size
int[]数组={1,2,3};//无法添加其他条目。
ArrayList ArrayList=新的ArrayList();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
arrayList.add(4);//动态尺寸
从我在谷歌上搜索到的内容来看,使用ArrayList而不是普通数组有很多好处,但是ArrayList的缺点是什么,在什么情况下应该使用数组而不是ArrayList?另外,如果使用ArrayList没有缺点,为什么Java开发人员不用ArrayList替换数组?


任何解释都将不胜感激。

在我看来,使用
ArrayList
比原始数组的主要优势在于它的大小不受限制,它的API方法以及Java 1.5中对泛型的使用。
ArrayList
由一个基本数组支持,因此从技术上讲,如果您想自己维护一整批代码,您可以使用基本数组,但为什么要这样做,而您可能需要的是现成的?此外,由于
ArrayList
是一个
集合
,除此之外(
列表
等),它为您提供了丰富的库函数,包括本机函数和第三方函数


使用
ArrayList
的缺点是创建和维护成本更高。

好吧,
ArrayList
在幕后为您使用数组,并在数组达到极限时创建一个新数组。在与JNI通信时,我必须使用数组,例如从C/C++库读取数据。请注意,在早期版本的Java中,您不能说
ArrayList
(或
或任何其他类型)。只能说
ArrayList
,这不提供任何类型安全性。
ArrayList
的所有元素都必须是引用类型。否则,
ArrayList
可能有原语,并且它不知道它是否包含地址或文字。@Rarw我不会说速度在这里是个大问题。如果不知道要提取多少项,则不应首先使用数组,如果使用
ArrayList
,则表示您愿意在内部数组必须增长时接受性能影响。如果是关于访问时间,那么stacktrace中的调用就很少了,因为使用
ArrayList
您必须使用
get(int index)
方法,毕竟该方法只返回数组[index](检查上下限后),如果使用常规JVM,成本不会太高。我会使用数组而不是
ArrayList
,原因有三:1)基本数组,例如在复制文件内容时,您将使用
byte[]
(而不是
byte[]
List
)。2)通过JNI访问其他编程语言的库,例如访问C或C++编写的DLL。3) 编写关键内存占用应用程序,例如起搏器软件。