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

CloudCone:$14/年KVM-512MB/10GB/3TB/洛杉矶机房

CloudCone发布了2021年的闪售活动,提供了几款年付VPS套餐,基于KVM架构,采用Intel® Xeon® Silver 4214 or Xeon® E5s CPU及SSD硬盘组RAID10,最低每年14.02美元起,支持PayPal或者支付宝付款。这是一家成立于2017年的国外VPS主机商,提供VPS和独立服务器租用,数据中心为美国洛杉矶MC机房。下面列出几款年付套餐配置信息。CPU:...

特网云-新上线香港五区补货资源充足限时抢 虚拟主机6折,低至38元!

官方网站:点击访问特网云官网活动方案:===========================香港云限时购==============================支持Linux和Windows操作系统,配置都是可以自选的,非常的灵活,宽带充足新老客户活动期间新购活动款产品都可以享受续费折扣(只限在活动期间购买活动款产品才可享受续费折扣 优惠码:AADE01),购买折扣与续费折扣不叠加,都是在原价...

RFCHOST - 洛杉矶CN2 GIA VPS季付23.9美元起 100Mbps带宽

RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...

java集合为你推荐
科来网络分析系统如何破解电信星空极速?开票系统怎样开普通发票系统附清单fclosefclose / fopen查字网“很”去掉双人旁读什么?mindmanager破解版谁有MindManager破解版的jdk6java—JDK6,在SUN公司官网下载的链接,smartupload为什么使用smartupload执行上传保存操作时用这句smart.save("upload")失败用smart.save("/upload")成功欢迎页面windows欢迎界面ruby语言Ruby是一种什么样的语言,主要用来做什么,现在有一家公司让我从java转ruby,我很犹豫?图片存储如何将图片保存下来
免费动态域名解析 息壤主机 服务器怎么绑定域名 私有云存储 免费个人网站申请 777te 中国智能物流骨干网 河南移动邮件系统 1美金 万网空间购买 根服务器 web服务器搭建 dnspod 帽子云排名 atom处理器 ledlamp 中国联通宽带测试 zencart安装 在线tracert iptables 更多