数组与集合有什么不同之处

news2024/11/20 9:31:39

这个问题其实就是一个非常基础的面试题,一般面试官想了解你基础知识方面的掌握时,基本都会问这个问题,尤其是一些,计算机学子毕业之后,如果还是想要从事计算机技术相关的行业时,那么在面试的时候就需要做好充足的准备,因为结合自身考虑,大部分刚毕业的计算机专业的同学并没有相关的项目经验。

所以根据一般公司的面试环节,面试官会从:自身基础知识储备、项目经验、工作态度、个人能力等几个大方面入手,那么针对以上这几点,如果投递简历时,公司在审核简历时针对刚毕业的大学生简历,都会提前跟面试官沟通好,这个时候面试官就会直接跳过项目问题,简单直接的主要针对基础知识问题,会问的很多,所以,从事计算机行业,如果不想被淘汰,你就需要每天不断学习增加知识储备量。那么做好心理建设的朋友我们就继续来了解这个java基础知识点吧,从这一刻开始,每天储备一点基础知识,滴水也可汇成汪洋,毕竟积少成多嘛!

那么针对数组和集合的区别,我们就先来简单的唠唠区别吧!

首先我们需要明确:什么是数组?

数组(Array):用来有序排列同类数据元素的集合被称为数组(数组是一个可以存储一组或一系列相关数据的容器),数组中的每个元素都具有相同的数据类型,,在计算机语言中,数组是非常重要的集合类型,数组的三个基本特征表现在:一致性(像数组它只能保存相同数据数据类型的元素,可以是任何相同的数据类型)、有序性(数组中的元素都是有序的,主要通过下标进行访问)、不可变性(数组一旦开始初始化,则数组的长度是不可变的)。数组有两种创建方式:动态初始化(指定长度),静态初始化(指定内容)。

总体来说数组主要的特点就是:

1.长度是确定的,数组一旦被创建,它的大小就是不可变的

2.数组中的元素类型必须是相同类型,不允许出现混合类型

3.数组既可以存储基本数据类型,又可以存储引用数据类型(基本数据类型存储的是值, 引用数据类型存储的是地址值)

4.数组变量属于引用类型,数组也是对象,数组中的元素相当于对象的属性

5.数组由索引(索引的作用是方便查找元素,索引从0开始到数组的长度-1结束)和数组元素组成

6.通常使用for循环来实现对数组的遍历

好嘞!朋友们,以上就是针对于数组的大致简说,接下来我们要来说说集合了,了解完数组,再了解完,想必大家就可以对数组和集合的区别做出结论啦!

请问什么是集合呢?上次已经给大家做过关于集合问题的回答了,大家也可以参考参考哦!那么既然已经详细讲解了,下面我就只做简述喽!

其实在学习java的过程中亦或者是工作中,我们始终都是在跟数据打交道,比如怎么把这个数据传输下去,又怎么接收这个数据呢,这个数据如何保存呢?这些都是大家在处理数据时最基础的问题了,特别像我们切菜的时候,我们要找碟子或者碗将切好的菜存放起来,而在日常生活中,像这类用作储存的容器特别多,像碗啊、碟子啊、食品包装袋啊、纸箱子等。甚至我们居住的房子也是一个大号的容器啊,他们都有一个统一的特点,那就是“能装”,不同的就是他们的容纳量不同,他们有各式各样的样子,随着生活的不断提高,这些容器的样子也是越来越好看,这些容器不仅让我们的生活井井有条起来,也提高了我们的生活质量。

同样的,在java中也存在各种各样的“容器”,我们把java中所有“容器”的总称,称为集合。

 就像图片中显示的就是集合中的容器,它们存储数据的形式也是各不相同的,简单来说,集合就是一个放数据容器,它主要包括Collection和Map集合,集合只能存放对象,Java集合类存放于java.util包中,Java中每一种基本数据类型都有对应的引用类型。例如在集合中存储一个int型数据时,要先自动转换成Integer类后再存入。

那么针对单列集合Conllection和双列集合Map它们各自又有什么不同的特点呢?大家可以参考之前的回答(比较详细),这里给大家简单总结,大家简单看看:

综合以上对集合的了解大家现在也能总结出来数组和集合到底有什么区别了吧!

1.数组是静态的,有固定大小,且创建之后无法改变;而集合是可以动态扩容的,可以根据需要动态改变大小。如果要存储基本数据类型,并且也有固定的个数,如果元素个数是固定的,推荐用数组如果元素个数不是固定的, 推荐用集合,因为数组的长度是固定的(数组是静态的,一个数组实例具有固定大小,一旦创建,无法改变),集合长度是可以改变的(根据需要动态改变大小,而且集合提供了更多的成员方法,可以满足更多的需求),简单来说,元素个数固定,推荐使用数组,若元素个数不固定,推荐使用集合。

2.数组既可以存储基本数据类型,又可以存储引用数据类型(基本数据类型存储的是值, 引用数据类型存储的是地址值);集合只能存储引用数据类型(也就是对象), 集合中也可以存储基本数据类型,但是在存储的时候会自动装箱(JDK1.5新特性)变成对象。

3.数组和集合都是java中的容器,但是数组声明了它容纳的元素类型,而集合不声明。

4.数组是java语言内置的数据类型,是线性排列的数组,所以可以快速访问元素,正因为数组有这样的优点,大家可以看到很多集合的底层结构就是数组。

5.使用场景不同,数组一般使用在数据长度固定的情况,并且主要进行的是数据的查找操作。而集合一般是用在需要同时存储具有一对一关系的数据,也就是保存键值对数据的情况下,都是使用集合,并且在处理数据重复问题的时候就可以直接使用Set集合解决这个问题(Set集合的特点是元素唯一,且不可重复)。

6.我们在定义数组的时候必须指定数组元素的类型,但是集合如果不定义的话就默认所有的元素都是Object(Object类是所有类的父类)。

7.我们无法直接获取数组中实际存储的元素个数,使用length()也只能获取数组的长度,但是集合可以直接用size()直接获取集合中实际存储的元素个数。

8.集合有多种实现方式和不同的适用场合,比如:List、Set、Map等,但是数组只采用分配连续的空间方式。而且集合以接口和类的形式存在,具有封装、继承、多态等关于类的特点,所以通过方法和属性的调用就可以实现一些各种复杂的操作,这样可以有效的提高软件的开发效率。

好啦,以上就是针对这个问题的一些介绍,分开做了介绍,也给大家做了总结,大家可以参考利用哦,也祝各位准备面试的宝子们,年后面试顺利!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Faster RCNN网络源码解读(Ⅰ) --- Fast RCNN、Faster RCNN论文解读

目录 一、Fast R-CNN论文解读 二、Faster R-CNN论文解读 一、Fast R-CNN论文解读 Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66…

Win10家庭版安装Docker桌面版

文章目录1.主板BIOS中开启虚拟化2.开启Hyper-V(1)使用下列代码生成一个.cmd文件,并以管理员身份运行该文件。(2)看到运行成功即可关闭该文件。(3)勾选Hyper-V设置里的所有选项(4&…

2-2-3-10、并发设计模式

目录终止线程的设计模式Two-phase Termination(两阶段终止)模式——优雅的终止线程使用场景避免共享的设计模式Immutability模式——想破坏也破坏不了如何实现使用 Immutability 模式的注意事项Copy-on-Write模式应用场景Thread-Specific Storage 模式—…

这几个实用的微信功能,你该知道

生活中我们每天都会使用到微信,用了10年才发现,原来微信隐藏这么多神功能,真是太实用了,下面一起来看看吧!朋友圈发长视频 如果你想要在朋友圈里分享长视频,可以借助微信收藏“转发”到朋友圈。 在收藏里添…

一位普通前端开发的一年|2022总结

前言 2022年转眼快要结束,在这一年我学到了很多东西,现在就来总结一下我的2022,复盘一下过去一年的成果。 总结 在2022年2月底从上一家公司跳槽,面试了两家公司两家拿到了两个offer,当时感觉自己很厉害,…

jdk-Atomic源码学习

上文:AQS-Exchanger源码学习源码下载:https://gitee.com/hong99/jdk8Atomic了解atomic是并发框架中的一员,所属位置:java.util.concurrent.atomic 该类主要是用来解决内存可见性、有序、线程安全,当然底层也是通过cas来…

NEUQ week8 动态规划

题目 P1616 疯狂的采药 题目背景 此题为纪念 LiYuxiang 而生。 题目描述 LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个…

贪吃蛇基础·框架版(简单)结尾有原码

更新不易,麻烦多多点赞,欢迎你的提问,感谢你的转发, 最后的最后,关注我,关注我,关注我,你会看到更多有趣的博客哦!!! 喵喵喵,你对我…

PSM倾向得分匹配代码和案例数据

PSM倾向得分匹配代码和案例数据 含义:倾向评分匹配(Propensity Score Matching,简称PSM)是一种统计学方法,用于处理观察研究(Observational Study)的数据。 在观察研究中,由于种种…

【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动

前言 iMX6Q 支持多种启动方式,如 emmc启动、SD 卡启动等,这里简单的记录一下 SD卡启动的流程 下载u-boot 使用 NXP 官方提供的 uboot-imx,代码地址为: https://github.com/nxp-imx/uboot-imx 使用 git 下载 uboot-imx&#xff…

自动驾驶接力赛,还在继续奔跑的Apollo带来哪些改变?

自动驾驶,被看作人工智能技术落地最快、范围最广、引发商业效应最显著的场景之一。从人人好奇的无人车,到满大街司空见惯的无人配送,自动驾驶在过去几年里快速成熟,成为城市交通系统的重要组成部分。数据显示,2020-203…

融云 CEO 董晗:国产化进程加速,助推政企数智办公平台深化发展

完整报告关注公众号,限免下载 政策催化加疫情助推下,办公线上化迅速完成着市场教育已经成为当前的主流趋势。而随着“国产化”成为各行业数字化发展道路上的关键词,政企办公领域国产替代的发展确定性更加凸显。关注【融云 RongCloud】&#x…

hnu计网实验四-网络层与链路层协议分析(PacketTracer)

一、实验目的: 通过本实验,进一步熟悉PacketTracer的使用,学习路由器与交换机的基本配置,加深对网络层与链路层协议的理解。 二、实验内容: 4.1 路由器交换机的基本配置 打开下面的实验文件,按提示完成实…

Java 集合框架

目录 1. 简介 2. 概览 3. 实现类 3.1 List 3.2 Queue 3.3 Set 3.4 Map 1. 简介 容器,就是可以容纳其他Java对象的对象。*Java Collections Framework(JCF)*为Java开发者提供了通用的容器,其始于JDK 1.2,优点是: 降低编程难度提高程序…

成为用友ISV优选伙伴,迈丹科技8个月经历了一次脱胎换骨

12月9日,用友第四届企业云服务开发者大赛鸣金收兵,第一次参赛,第一次与用友正式合作的厦门市迈丹科技开发有限公司(以下简称迈丹科技),便凭借SPC企业质量管理解决方案第一次获奖,而且还是企业赛…

Unity模型

1、Unity中使用的模型 Unity支持很多模型格式,比如:.fbx,.dae,.3ds,.dxf,.obj等等 大部分模型都不是在Unity中制作的,都是美术人员在建模软件中制作,如 3DMax、Maya等等 当他们制作…

VueJs中的ref函数

前言在Vue2.0里面,与页面相关显示的数据是挂载在data下,而在vue3.0里,想要一个数据具备响应式,那么需要引入响应式API函数,通过API函数加工处理后,才具备响应式,两者之间在底层实现数据的响应式上也存在着差异01ref可将数据变成响应式在setup里面使用let定义的变量不是响应式的…

【XR】VR手柄定位技术

rvy competitive analyse Y1的手柄使用了基于红外光的主动式光学定位追踪方案,主要是通过头显的摄像头在短曝光图像上观测到手柄上红外光电发射的红外光,通过检测光点并根据多视图几何原理计算初步的位姿,然后融合产生于手柄IMU(…

深度优先搜索和广度优先搜索的java代码实现过程详解

深度优先搜索和广度优先搜索 在很多情况下,我们需要遍历图,得到图的一些性质,例如,找出图中与指定的顶点相连的所有顶点,或者判定某个顶点与指定顶点是否相通,是非常常见的需求。 有关图的搜索,…

Spring Security怎么自定义登录页? 怎么注销?

本章内容 怎么自定义登录页底层都怎么实现如何注销?注销底层源码简单分析 开干 去网上找个好看的前端, 改改改改spring security配置启动几个红框框的地方注意下 Configuration public class SecurityConfig {Beanpublic SecurityFilterChain securityFilterChain(HttpSecu…