数组和集合区别

数组和集合区别一 数组声明了它容纳的元素的类型 而集合不声明 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 二 数组是静态的 一个数组实例具有固定的大小 一旦创建了就无法改变容量了 而集合是可以动态扩展容量 可以根据需要动态改变大小 集合提供更多的成员方法 能满足更多的需求 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 三 数组不论是效率还是类型检查都是最好的 1 数组是大小固定的 一旦创建无法扩容 集合大小不固定 2 数组的存放

 一、数组声明了它容纳的元素的类型,而集合不声明。

       二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。

       三、数组不论是效率还是类型检查都是最好的。



1.数组是大小固定的,一旦创建无法扩容;集合大小不固定,

2.数组的存放的类型只能是一种,集合存放的类型可以不是一种(不加泛型时添加的类型是Object);

3.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查(不懂),都是最快的.

  ArrayList就是基于数组创建的容器类.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
数组Array和集合的区别:
 
(1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
 
(2)JAVA集合可以存储和操作数目不固定的一组数据。 (3)若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。
 
联系:使用相应的toArray()和Arrays.asList()方法可以回想转换。
 
一.集合的体系结构:
 
List、Set、Map是这个集合体系中最主要的三个接口。 List和Set继承自Collection接口。 Map也属于集合系统,但和Collection接口不同。
 
Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。Set 只能通过游标来取值,并且值是不能重复的。
 
List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的
 
Map 是键值对集合。其中key列就是一个集合,key不能重复,但是value可以重复。 HashMap、TreeMap和Hashtable是Map的三个主要的实现类。 HashTable 是线程安全的,不能存储 
null 
值 HashMap 不是线程安全的,可以存储 
null 
 
二.List和ArrayList的区别
 
  1.List是接口,List特性就是有序,会确保以一定的顺序保存元素.
 
  ArrayList是它的实现类,是一个用数组实现的List.
 
  Map是接口,Map特性就是根据一个对象查找对象.
 
  HashMap是它的实现类,HashMap用hash表实现的Map,就是利用对象的hashcode(hashcode()是Object的方法)进行快速散列查找.(关于散列查找,可以参看< <数据结构>
>)
 
  2.一般情况下,如果没有必要,推荐代码只同List,Map接口打交道.
 
  比如:List list = 
new 
ArrayList();
 
  这样做的原因是list就相当于是一个泛型的实现,如果想改变list的类型,只需要:
 
  List list = 
new 
LinkedList();
//LinkedList也是List的实现类,也是ArrayList的兄弟类
 
  这样,就不需要修改其它代码,这就是接口编程的优雅之处.
 
  另外的例子就是,在类的方法中,如下声明:
 
  
private 
void 
doMyAction(List list){}
 
  这样这个方法能处理所有实现了List接口的类,一定程度上实现了泛型函数.
 
  3.如果开发的时候觉得ArrayList,HashMap的性能不能满足你的需要,可以通过实现List,Map(或者Collection)来定制你的自定义类.

 

三。图示说明:

数组和集合区别 

数组和集合区别

 注:图参来之http://www.cnblogs.com/xiaoqv/archive/2011/11/24/2262142.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199809.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:09
下一篇 2026年3月20日 下午12:10


相关推荐

  • 易语言入门教程学习「建议收藏」

    易语言入门教程学习「建议收藏」e入门教程

    2025年8月2日
    4
  • eigen库的使用_eigenvalue

    eigen库的使用_eigenvalueEigen库使用指南1.模块和头文件Core#include<Eigen/Core>,包含Matrix和Array类,基础的线性代数运算和数组操作。 Geometry#include<Eigen/Geometry>,包含旋转,平移,缩放,2维和3维的各种变换。 LU#include<Eigen/LU>,包含求逆,行列式,LU分解。 Cholesky#include<Eigen/Cholesky>,包含LLT和LDLTCholesky分解

    2022年10月18日
    4
  • caffee学习——图像切割

    caffee学习——图像切割caffee 学习

    2026年3月19日
    2
  • 利用Redis实现高并发计数器

    利用Redis实现高并发计数器业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自增命令可以轻松实现以上需求。以一个接口一天限制调用次数为例: /** *是否拒绝服务 *@return */ privatebooleandenialOfService(StringuserId){ longc…

    2022年5月24日
    253
  • latex中求和符号正下方的符号怎么打_累加符号上下标的意义

    latex中求和符号正下方的符号怎么打_累加符号上下标的意义放在左上角的时候\sum^n:∑n\sum^n∑n放在正上方的时候\sum\limits^n:∑n\sum\limits^n∑n​放在右下角的时候\sum_{k=1}:∑k=1\sum_{k=1}∑k=1​放在正下方的时候\sum\limits_{k=1}:∑k=1\sum\limits_{k=1}k=1∑​

    2022年10月11日
    4
  • linux进入cbq文件夹,Linux流量控制(SFQ/TBFPRIO/CBQ/HTB原理介绍)

    linux进入cbq文件夹,Linux流量控制(SFQ/TBFPRIO/CBQ/HTB原理介绍)Linux 流量控制控发不控收 所以只能对产生瓶颈网卡处的发包速率进行控制 而网络瓶颈分析亦为 Linux 网络流控的第一步 二种流控算法 Linux 流量控制控发不控收 所以只能对产生瓶颈网卡处的发包速率进行控制 而网络瓶颈分析亦为 Linux 网络流控的第一步 二种流控算法上分 无类算法用于树叶级无分支的队列 SFQTBFpFIFO 分类算法用于多分支的队列 PRIOHTBCBQ 调度在分类器的

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号