Java--数组和集合区别
Posted MinggeQingchun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--数组和集合区别相关的知识,希望对你有一定的参考价值。
一、数组
1、Java语言中的数组是一种引用数据类型;不属于基本数据类型
2、数组当中既可以存储“基本数据类型”的数据,也可以存储“引用数据类型”的数据(数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是内存地址值)
3、数组是有对应的类,这个类是在JVM运行时创建的,所以没有对应的class 文件;(通过数组
创建语法 int[] a = 1, 100, 10, 20; 可看出,无法查看 数组类,以及源码);数组的父类是Object
4、数组一旦创建,在java中规定,长度不可变。(数组长度不可变)
5、java中的数组要求数组中元素的类型统一。比如int类型数组只能存储int类型,自定义Person类型数组只能存储Person类型
6、数组在内存方面存储的时候,内存地址连续。 这是数组存储元素的特点(特色)。数组实际上是一种简单的数据结构。
7、所有的数组都是拿“第一个小方框的内存地址”作为整个数组对象的内存地址。 (数组中首元素的内存地址作为整个数组对象的内存地址。)
8、数组中每一个元素都是有下标的,下标从0开始,以1递增。最后一个元素的下标是:length - 1 下标非常重要,因为我们对数组中元素进行“存取”的时候,都需要通过下标来进行
具体可参考Java数组
二、集合
1、集合
List,继承Collection,可重复、有序的对象
Set,继承Collection,不可重复、无序的对象
Map,键值对,提供key到value的映射。key无序、唯一;value无序,可重复
2、集合类结构图
3、集合特性比较
线程安全的效率都比较低,Vector,已被淘汰,可使用ArrayList替代。Hashtable,已被淘汰,可使用HashMap替代,如果是高并发的线程安全的实现,推荐使用ConcurrentHashMap。
三、数组与集合区别
(一)集合的由来
数组长度是固定的,当添加的元素超过了数组的长度时需要对数组重新定义, 这样太过繁琐!
因此,Java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而
增加,随着元素的减少而减少
(二)区别
1、数组既可以存储基本数据类型,又可以存储引用数据类型(基本数据类型存储的是值, 引用数
据类型存储的是地址值)
集合只能存储引用数据类型(对象), 集合中也可以存储基本数据类型,但是在存储的时候会自动装箱(JDK1.5新特性)变成对象
2、数组的长度是固定的,集合长度是可以改变的
3、定义数组时必须指定数组元素类型,集合默认其中所有元素都是Object
4、无法直接获取数组实际存储的元素个数,length用来获取数组的长度,但可以通过size()直接获取集合实际存储的元素个数
5、集合有多种实现方式和不同的适用场合,如List,Set,Map等;而不像数组仅采用分配连续的空间方式
6、集合以接口和类的形式存在,具有封装,继承和多态等类的特性,通过简单的方法和属性调用即可实现各种复杂的操作,大大提高软件的开发效率。
(三)使用情况:
1、如果元素个数是固定的,推荐用数组
2、 如果元素个数不是固定的, 推荐用集合
以上是关于Java--数组和集合区别的主要内容,如果未能解决你的问题,请参考以下文章