java集合Java List集合

java集合  时间:2021-07-09  阅读:()

请问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.arraycopy()的静态方法,它能以较快的速度拷贝数组,对primitive和Object都进行了重载,但是注意当对Object数组进行拷贝时,进行的是浅拷贝(shallow copy)。

Java集合的种类

A1:list,queue,set,tree,map等几个大类型,共有约3-40个子类。

A2:数据结构范围的集合包括Map Java的、狭义的Collection接口没有包括Map。

但Map、Collection、还有其他的子类都属于Java集合框架(Java Collections Framework, JCF) 属于集合。

Java List集合

写个访问器方法。

如果names中的元素可以被修改,可以直接: public List<String[]> getNames() { return names; } 如果不惜网names中的元素被修改: public List<String[]> getNames(){ List<String[]> namesCopy = new ArrayList<String[]>(); //此处将元素copy到新list中,深复制还是浅复制要看具体需求了 return namesCopy; }

RAKSmart VPS主机半价活动 支持Windows系统 包含香港、日本机房

RAKSmart 商家最近动作还是比较大的,比如他们也在增加云服务器产品,目前已经包含美国圣何塞和洛杉矶机房,以及这个月有新增的中国香港机房,根据大趋势云服务器算是比较技术流的趋势。传统的VPS主机架构方案在技术层面上稍微落后一些,当然也是可以用的。不清楚是商家出于对于传统VPS主机清理库存,还是多渠道的产品化营销,看到RAKSmart VPS主机提供美国、香港和日本机房的半价促销,当然也包括其他...

JustHost俄罗斯VPS有HDD、SSD、NVMe SSD,不限流量低至约9.6元/月

justhost怎么样?justhost服务器好不好?JustHost是一家成立于2006年的俄罗斯服务器提供商,支持支付宝付款,服务器价格便宜,200Mbps大带宽不限流量,支持免费更换5次IP,支持控制面板自由切换机房,目前JustHost有俄罗斯6个机房可以自由切换选择,最重要的还是价格真的特别便宜,最低只需要87卢布/月,约8.5元/月起!总体来说,性价比很高,性价比不错,有需要的朋友可以...

v5server:香港+美国机房,优质CN2网络云服务器,7折优惠,低至35元/月

v5net当前对香港和美国机房的走优质BGP+CN2网络的云服务器进行7折终身优惠促销,每个客户进线使用优惠码一次,额外有不限使用次数的终身9折优惠一枚!V5.NET Server提供的都是高端网络线路的机器,特别优化接驳全世界骨干网络,适合远程办公、跨境贸易、网站建设等用途。 官方网站:https://v5.net/cloud.html 7折优惠码:new,仅限新客户,每人仅限使用一次 9...

java集合为你推荐
mdm乳化剂MDM起什么作用settimerMFC 中,全局SetTimer函数怎么用?网关和路由器的区别网关和路由器有什么区别webcrackwebcrack4.0拓扑关系什么是空间数据的拓扑关系slideshare什么是slide sandaltvos智能电视都什么功能被广电封杀了?数秦科技浙江数链科技有限公司怎么样?弹幕播放器弹弹play播放器怎么样layoutsubviews如何让NSSplitView的子View的大小固定
美国vps服务器 未注册域名查询 过期备案域名查询 最新代理服务器地址 老左 视频存储服务器 腾讯云数据库 美国仿牌空间 主机屋免费空间 realvnc 网站卫士 游戏服务器出租 西安主机 netvigator 双十二促销 mteam 蓝队云 windowsserver2008 建站论坛 windowsserver2012 更多