java数组与集合
‘壹’ java中数组和集合有什么关系和区别
数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。还有一点,JAVA里面的数组是会做边界检查的,所以当你越界访问时,会抛出RuntimeException,所以不用担心在C或C++因为不做边界检查而出现的问题了,当然边界检查是以牺牲效率为代价的。数组与其它容器类的区别体现在三个方面:效率、类型识别和可以持有primitives。
JAVA里面提供的其他容器还包括List,Set和Map。他们处理对象的时候就好像这些这些对象都没有自己的类型一样,容器将它所含的元素都看成是JAVA中所有类的根类Object类型的,这样我们只需创建一种容器,就能把所有的类型的对象全部放进去。但是当取出的时候,那就需要我们自己进行类型转换了,不过在JAVA Tiger版里面新引入了“泛型”的概念,结合容器类一起使用就可以解决类型转换的问题,关于“泛型”这就不详细讲解了。从上面的角度来看,这种做法很不错,但是就是苦了primitives,如果是常量的话,可以把primitive转换成wrapper类然后放进容器里面,如果是变量的话,那就只能放在你自己的类里了。与其他容器类相比,数组会在编译的时候作类型检查,从而防止你插入错误类型的对象,或者在提取对象的时候把对象的类型给搞错了,JAVA在编译和运行的时候都能阻止你将一个不恰当的消息传给对象。至于效率,数组无疑是要高于其他容器类的,因为有些容器类的实现就是基于数组的,比如ArrayList。不论从类型检查还是效率的角度来考虑,我们首选数组来作为容器都是没错的,但是数组的缺点就是功能太弱了,所以才会有容器类的出现。
要多说几句的就是,java.util包里面有一个Arrays类,它包括了一组可以用于数组的static的工具方法,其中最基本的是四个方法:用来比较两个数组是否相等的equals();用来填充数组的fill();用来对数组进行排序的sort();以及用于在一个已经排序的数组中查找元素的binarySearch()。所有这些方法都对primitives和Object进行了重载。此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器。JAVA标准类库还提供了一个System.array()的静态方法,它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝(shallow )。
‘贰’ Java集合和数组的区别介绍
集合的对象位置是由对象hash值决定的。所以在集合中查找是否有某个对象效率很高。数组以下标顺序决定位置。
数组是有序的,所存对象可以重复。集合无序的,对象相同的最多只有一个。
所以处理有序的的事务用数组(列表),无序的且有较多合并存取查的事务用集合。
‘叁’ java集合和数组的区别,举例子
int[] arr={0,2,3,4,5,6,7};//大小固定,只能存储int类型的值;
List list = new ArrayList();
list.add("a");
list.add(2);//大小不固定,可以存储任意类型;
总结:
数组特点:大小固定,只能存储相同数据类型的数据;
集合特点:大小可动态扩展,可以存储各种类型的数据;
如有帮助请采纳(不懂请提问),可以看我主页,欢迎来交流学习;
‘肆’ java 中数组和集合的区别
1、数组特点高效、保存基本类型,集合带array的底层由数组实现,还有一部分由链表或者树 2、数组大小固定(巨大缺点,内存中一定连续),集合各种实现吧! 3、数组只能放一种类型,集合不考虑泛型可以存很多类型。
‘伍’ Java中数组和集合的区别
对JAVA的集合的理解是相对于数组,区别:
1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
2)JAVA集合可以存储和操作数目不固定的一组数据。
3)JAVA集合只能存放引用类型的的数据,不能存放基本数据类型;数组可以。
(注意基本类型int,double等等,但是Integer,Double等是类类型了)
附加:
所有的JAVA集合都位于 java.util包中!
JAVA集合主要分为三种类型:
Set(集)
List(列表)
Map(映射)
‘陆’ Java 中集合和数组 的区别
集合其实是包含了数组,集合可以是list,map,array等。
而数组 属于集合的一种,数组一般是同类的一个组合,如int[],String[],Object[]等。
‘柒’ Java中的数组和集合有什么不同
数组:是不可变长度的容器
集合:是可变长度的容器