首页 > 编程知识 正文

array和arraylist区别什么时候用array,什么是arraylist

时间:2023-05-05 21:01:00 阅读:202053 作者:265

参考:http://www.cnblogs.com/a164266729/p/4561651.html

(1)ArrayList是Array的复杂版本

ArrayList内部封装了一个Object类型的数组,从一般的意义来说,它和数组没有本质的差别,甚至于ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。

(2)存储的数据类型

ArrayList可以存储异构对象,而Array只能存储相同数据类型的数据。

(3)长度的可变

Array的长度实际上是不可变的,二维变长数组实际上的长度也是固定的,可变的只是其中元素的长度。而ArrayList的长度既可以指定(即使指定了长度,也会自动2倍扩容)也可以不指定,是变长的。

(4)存取和增删元素

对于一般的引用类型来说,这部分的影响不是很大,但是对于值类型来说,往ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。另外,ArrayList是动态数组,它不包括通过Key或者Value快速访问的算法,所以实际上调用IndexOf、Contains等方法是执行的简单的循环来查找元素,所以频繁的调用此类方法并不比你自己写循环并且稍作优化来的快,如果有这方面的要求,建议使用Hashtable或SortedList等键值对的集合。

好了,关于这两个数据结构的对比我们就到这里,如果有觉得不妥的地方,欢迎大家指正。

附Array和ArrayList的相互转换:

public class Test { public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("现代的歌曲"); list.add("可耐的小蝴蝶"); list.add("体贴的身影"); int size=list.size(); String[] array = (String[])list.toArray(new String[size]); for(int i=0;i<array.length;i++){ System.out.println(array[i]); } } }

package test.test1; import java.util.Arrays; import java.util.List; public class Test { public static void main(String[] args) { String[] array=new String[3]; array[0]="现代的歌曲"; array[1]="可耐的小蝴蝶"; array[2]="体贴的身影"; List<String> list=Arrays.asList(array); for(int i=0;i<list.size();i++){ System.out.println(list.get(i)); } } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。