当前位置: 首页 > news >正文

一篇文章弄清楚啥是数组和集合

数组和集合多语言都有,数组是集合的一种,是一种有序的集合,不面向对象,面向过程的也有。

1.数组

逻辑结构:线性的

物理结构:顺序的存储结构

申请内存:一次申请一大段连续的空间,一旦申请到了,内存就固定了。

存储特点:所有数据存储在这个连续的空间中,数组中的每一个元素都是一个具体的数据(或对象),所有数据都紧密排布,不能有间隔。

操作

查询:每一个元素都有一个数值下标,可以通过下标瞬间定位到某个元素

增加:从尾部增加:数组名[total++]=新元素

从其他位置插入:先把index位置开始所有元素后移,然后数组名[index]=新元素

删除:先把index后面的元素前移,然后数组名[total--]=null

改:直接数组名[index]=新元素

优缺点

优点:查询效率高

缺点:添加/删除效率低,因为都涉及到移动元素;无法直接获取有效元素的个数,需要total来辅

使用范围:查询操作远多于插入和删除操作的场景

2.集合

为了可以满足用户数据更多种的逻辑关系,而设计的一系列的不同于数组的可变的聚合的抽象数据类型。

总的特点:

1、只能存对象

2、容量可以自动调节

3、可以直接获取有效元素的个数:size()

集合的几个常用接口

详细描述

Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

List:有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

Set:一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的 set 抽象。

SortedSet进一步提供关于元素的总体排序 的 Set。这些元素使用其自然顺序进行排序,或者根据通常在创建有序 set 时提供的 Comparator进行排序。该 set 的迭代器将按元素升序遍历 set。提供了一些附加的操作来利用这种排序。(此接口是 SortedMap 的 set 对应接口)。

Map:将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形式查看某个映射的内容。映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;另一些映射实现则不保证顺序,如 HashMap 类。

SortedMap进一步提供关于键的总体排序 的 Map。该映射是根据其键的自然顺序进行排序的,或者根据通常在创建有序映射时提供的 Comparator 进行排序。对有序映射的 collection 视图(由 entrySet、keySet 和 values 方法返回)进行迭代时,此顺序就会反映出来。要采用此排序方式,还需要提供一些其他操作(此接口是 SortedSet 的对应映射)。

概况总结

Collection接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式

Set:中的数据对象没有顺序且不可以重复

List:中的数据对象有顺序且可以重复

Map接口定义了存储“键(key)-值(value)映射对”的方法

http://www.lryc.cn/news/17591.html

相关文章:

  • 计算机网络(五):三次握手和四次挥手,TCP,UDP,TIME-WAIT,CLOSE-WAIT,拥塞避免,
  • 【数据结构】二叉树(C语言实现)
  • 高级信息系统项目管理(高项 软考)原创论文——成本管理(2)
  • 代码签名即将迎来一波新关注
  • 黑盒渗透盲打lampiao
  • 笔记:VLAN及交换机处理详细教程(Tagged, UnTagged and Native VLANS Tutorial)
  • 在字节跳动,造赛博古籍
  • Android 12.0设置默认Launcher安装一款Launcher默认Launcher无效的解决方案
  • 数据结构第16周 :( 希尔排序+ 堆排序 + 快速排序 )
  • 【C++】类和对象
  • Java缓存面试题——Redis应用
  • KMP算法详细理解
  • RabbitMQ单节点安装
  • tomcat 服务的目录结构和tomcat的运行模式
  • vector迭代器失效问题
  • 2023年排名前茅的十大饭店装修设计!
  • MFCCA多通道多说话人语音识别模型上线魔搭(ModelScope)
  • 刷题记录:牛客NC25078[USACO 2007 Ope S]City Horizon
  • 【Java|golang】 1238. 循环码排列---格雷编码
  • Python自动化测试框架封装和调用
  • 线程的执行
  • 【视频】海康摄像头、NVR网络协议简介
  • 【Spring的事务传播行为有哪些呢?Spring事务的隔离级别?讲下嵌套事务?】
  • 其实一点不难学会这三步一定让你学会制作一个『3D建模』大屏
  • 【C++】C++的内存模型之四大分区
  • Vue跨级通信(重点)
  • 支付系统中的设计模式07:责任链模式
  • 期末综合考试
  • 数据结构与算法之爬楼梯动态规划
  • CleanMyMac4.12最新Mac电脑系统垃圾清理神器