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推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

野草云提供适合入门建站香港云服务器 年付138元起 3M带宽 2GB内存

野草云服务商在前面的文章中也有多次提到,算是一个国内的小众服务商。促销活动也不是很多,比较专注个人云服务用户业务,之前和站长聊到不少网友选择他们家是用来做网站的。这不看到商家有提供香港云服务器的优惠促销,可选CN2、BGP线路、支持Linux与windows系统,支持故障自动迁移,使用NVMe优化的Ceph集群存储,比较适合建站用户选择使用,最低年付138元 。野草云(原野草主机),公司成立于20...

onevps:新增(支付宝+中文网站),香港/新加坡/日本等9机房,1Gbps带宽,不限流量,仅需$4/月

onevps最新消息,为了更好服务中国区用户:1、网站支付方式新增了支付宝,即将增加微信;原信用卡、PayPal方式不变;(2)可以切换简体中文版网站,在网站顶部右上角找到那个米字旗,下拉可以换中国简体版本。VPS可选机房有:中国(香港)、新加坡、日本(东京)、美国(纽约、洛杉矶)、英国(伦敦)、荷兰(阿姆斯特丹)、瑞士(苏黎世)、德国(法兰克福)、澳大利亚(悉尼)。不管你的客户在亚太区域、美洲区...

java集合为你推荐
元数据管理什么是元数据?(指数据中心建设而言)举个例子说明一下。fcloseC语言fclose错误李昊天铠甲勇士2刑天的李昊天秘密是什么inode智能客户端我的电脑上inode智能客户端连接网络时,提示~服务器没有响应,请确认当前认证网卡已连接到合适的网系统论坛怎么进论坛清除电脑垃圾怎么删除电脑垃圾?mediasres什么意思图片存储手机照片的保存方法?菜霸保险是传销吗?easeljs如何使用createjs来编写html5游戏
免备案虚拟主机 linkcloud godaddy域名优惠码 789电视网 傲盾官网 微软服务器操作系统 美国独立日 申请网站 群英网络 空间申请 godaddy空间 腾讯数据库 黑科云 贵州电信 免费获得q币 美国服务器 压力测试工具 内存 winscpiphone 电脑主机打不开 更多