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; }

香港云服务器 1核 1G 29元/月 快云科技

快云科技: 12.12特惠推出全场VPS 7折购 续费同价 年付仅不到五折公司介绍:快云科技是成立于2020年的新进主机商,持有IDC/ICP等证件资质齐全主营产品有:香港弹性云服务器,美国vps和日本vps,香港物理机,国内高防物理机以及美国日本高防物理机产品特色:全配置均20M带宽,架构采用KVM虚拟化技术,全盘SSD硬盘,RAID10阵列, 国内回程三网CN2 GIA,平均延迟50ms以下。...

酷锐云香港(19元/月) ,美国1核2G 19元/月,日本独立物理机,

酷锐云是一家2019年开业的国人主机商家,商家为企业运营,主要销售主VPS服务器,提供挂机宝和云服务器,机房有美国CERA、中国香港安畅和电信,CERA为CN2 GIA线路,提供单机10G+天机盾防御,提供美国原生IP,支持媒体流解锁,商家的套餐价格非常美丽,CERA机房月付20元起,香港安畅机房10M带宽月付25元,有需要的朋友可以入手试试。酷锐云自开业以来一直有着良好的产品稳定性及服务态度,支...

CloudServer:$4/月KVM-2GB/50GB/5TB/三个数据中心

CloudServer是一家新的VPS主机商,成立了差不多9个月吧,提供基于KVM架构的VPS主机,支持Linux或者Windows操作系统,数据中心在美国纽约、洛杉矶和芝加哥机房,都是ColoCrossing的机器。目前商家在LEB提供了几款特价套餐,最低月付4美元(或者$23.88/年),购买更高级别套餐还能三个月费用使用6个月,等于前半年五折了。下面列出几款特别套餐配置信息。CPU:1cor...

java集合为你推荐
xclientxclient校园网的客户端一直显示查找设备的原因?????急急急,好多天不能上网了···········adversary英语match,是什么意思.?webcrackwebcrack4网页密码editplus破解版DBTools Manager Professional 破解版在哪里可以下载?inode智能客户端inode智能客户端怎么使用wifi?丁奇请全面剖析一下黑胡子丁奇这个人物。微信论坛手机微信论坛如何实现欢迎页面怎样在开机制造欢迎页面?booth算法用Booth算法计算-4×3的4位补码乘法运算,要求写出每一步运算过程及运算结果 麻烦详细说明每一步的操作中科红旗北京中科红旗软件技术有限公司的介绍
深圳域名注册 传奇服务器租用 godaddy域名解析 草根过期域名 西安服务器 国外主机 awardspace yardvps 60g硬盘 贵州电信宽带测速 patcha 三拼域名 e蜗 最好的免费空间 ftp免费空间 国外视频网站有哪些 视频服务器是什么 带宽租赁 starry 免费的域名 更多