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--数组和集合区别的主要内容,如果未能解决你的问题,请参考以下文章

java集合和数组的区别,举例子

java语言中集合与数组的区别是啥?

数组和集合的区别?

简述集合框架和数组的区别

java中队列,数组和list集合的区别

Java集合:ListSet和Map的区别,ArrayList和LinkedList有何区别..........