j**a语言中集合与数组的区别? 时间: 发布人:fcwgej 已解决问题谷歌fcwgej用户在提交了关于“weyj**a语言中集合与数组的区别?”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-24T09:17:38。希望大家能够帮助她。 详细问题描述及疑问:期待您的答案,谢了,下次有事儿别忘了找我 ! 希望以下的回答,能够帮助你。第1个回答 用户名:zegqf6k4v32 时间:推荐于2017.11.25 数组是J**A其编阻子语言内置的**类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的别华轴据容量就固定了,而且在其生命周期里是不能改变的。还有一点,J**A里面球觉还端家的数组是会做边界检查的,所以当你越界访问时,会抛出RuntimeException,所以不用担心在C或C++因为不做边界检查怎市么红化选而出现的问题了,当然边界检查是以牺牲效率为代价的。数组与其它容器类的区别体现议毫尽在三个方面:效率、类型识别和可以持有primitives。J**A里面提供的其他容器还包括List,Set和Ma顺合燃里p。他们处理对象的时候就好像这些这些对象都没有自己的类型一样,容器将它所含的元素都看成是J**A中所有类的根类Object类型的,这样我们只需创建一种容器,就能把所有的类定够示根题送型的对象全部放进去。但是当取原出的时候,那就需要我们粉项行广国华落反重货自己进行类型转换了,不过在JAVATiger版里面新引入了“泛型”胞布乎省企字春触的概念,结合容器类一起使主教话校滑字直态用就可以解决类型转换的问题,关于“泛型”这就不详细讲解了。从上面的士死外浓飞参旧绿直角度来看,这种做法很不错,但是就是苦了primitives,如果是常量的话,可以把primitive转换成wrapper类然后放进容凯工担映利查器里面,如果是变量的话,那就只能放在你自己的类里了。与其他容器类相比,数组会在编译的时候作类型检查,从而防止你插入错误类型的对象,或者在提取对象的时候把对象的类型给搞错了,J**A在编译和运行的时候都能阻止你将一个不恰当的消息传给对象。至于减放围件处曲酒要啊效率,数组无疑是要高于其他容法蛋适已丰弱河律器类的,因为有些容器类的实现就是基于数组的,比如ArrayList。不论从类型检查还是效率的角度来考虑,我们首选数组来作为容器都是没错的,但是通认检兵玉挥剧数组的缺点就师能太弱了,所以才会有容器类才场何杆据灯何的出现。要多说几句的就是,j**a.util包里面有一个Arrays类,它包括了一组可以用于数组的static的工具方法,其中最基本的是四个方法:用来比较两个数组是否相等的equals();用来填充数组的fill();用来对数组进行排序的sort();以及用于在一个已经排序的数组中查找元素的binarySearch()。所有这些方法都对primitives和Object进行了重载。此外还有一个asList()方法,它接受一个数组,然后把它转成一个List容器。J**A标准类库还提供了一个System.arraycopy()的静态方法,它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝