java的容器简介

容器的概念

        容器指的是用于容纳收藏某种物体并进行一定程度管理的器具,这种东西在我们的日常生活中是非常常见的,比如我们吃饭时用到的锅碗瓢盆这些都是容器的范畴,可见容器是一个非常宽泛的概念。

        在java中我们将容器的概念抽象出来,将在程序中定义来储存和管理数据的语法结构称作为容器。容器的功能就是对数据进行存储和管理,这样将范放宽来看,我们在类中定义的变量也可以看作是容器。在回顾之前谈及的数组结构,能够明显的发现,数组的作用就是对一组同类型的数据进行存储以及管理操作,因此数组也是一个容器。

        在数组中,数据存储时是按照数组的序列也就是下标来进行存放和管理的。数组是一种简单的线性序列结构,可以让我们方便快捷地对其中地元素进行操作,但是对数组的操作并不灵活。这种现象在定义数组时体现得最为明显。我们都知道,定义数组时必须指定数组的长度,这也就意味着如果我们要储存的数据的数量超过了定义数组的长度时就必须对数组进行扩容操作,而扩容操作并不能在原数组的基础上进行,只能重新新建一个长度符合的数组然后将之前的数组中的内容拷贝到该数组当中。此外,当我们在一个数组中进行储存或者删除元素的操作时,数组中元素的序列会发生相应的变化,而我们并不能直接通过一个方法来添加或者删除一个元素,只能通过循环的方式来添加或者获取数组中的元素,所以从一定的角度来说,数组虽然属于容器的一个分支,但是它的使用确实存在不方便的地方。

        为了弥补数组对数据操作中存在的缺陷,容器的概念便应运而生了。容器的英文表述为Collection直译为集合,因此容器也可以叫做集合。大部分容器的底层都是同过数组来实现的。在用容器进行数据储存时,数据储存的位置为内存,和储存在磁盘中不同,这是一种临时性的存储。

容器的分类

        在java中,根据数据的存储方式不同,可以将容器分为单例集合和双例集合,其中到单例集合的存储方式通过接口Collection来定义,它指的是将数据一个一个的单独存储到容器中,在这个接口之下又定义了List接口和Set接口。List接口定义的容器对数据进行储存时是有序的,并且允许出现相同的数据,更像是一个高级的数组。List接口的实现类有ArrayList、LinkedList和Vector三类,着三个类实现了有序可重复的单例集合的存储以及操作。与List接口相对应的是Set接口,这个接口储存的是单例无序且不能重复的数据,它的存在更像是数学中集合的概念。Set接口也有三个实现类,它们分别是:UnkedHashSet、HashSet以及TreeSet。

        除了单例集合外,java中还提供了双例集合,定义双例集合的接口是Map接口,这个接口只有HashTable、HashMap、TreeMap、UnkedHash、Properties等五个接口。所谓的双例集合,指的是基于key和Value的结构进行数据存储,说得直白点就是存储进去的值分为了两类——key和Value,它们之间的关系一一对应,一个key的值只能对应一个Value的值。这样一说应该能够明显感受到,这种存储方式和我们中学时学的函数的概念相吻合,因此在理解双例集合的时候可以把key的值理解为函数中的自变量x,而Value的值可以理解为自变量x对应的因变量y。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

webpack3升级webpack4遇到的各种问题汇总

webpack3升级webpack4遇到的各种问题汇总 问题1 var outputNamecompilation.mainTemplate.applyPluginWaterfull(asset-path,outputOptions.filename,{......)TypeError: compilation.mainTemplate.applyPluginsWaterfall is not a function解决方法 html-webpack-plugin 版…

机器学习实战-聚类算法

聚类算法是一种无监督学习的算法,用于将数据集中的数据分成不同的聚类或组。聚类算法是数据挖掘和机器学习领域中常见的技术之一,具有广泛的应用。 以下是聚类算法的一些知识点: 聚类算法的目的是将数据集划分为不同的组,使得组内…

【酱浦菌-爬虫项目】爬取百度文库文档

1. 首先,定义了一个变量url,指向百度文库的搜索接口 ‘https://wenku.baidu.com/gsearch/rec/pcviewdocrec’。 2. 然后,设置了请求参数data,包括文档ID(docId)和查询关键词(query)。…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心,但又确乎说得上是19岁途中的又一枚勋章 从去年得知,纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客,记录好题和成长……感谢你们的关注&…

Flask表单详解

Flask表单详解 概述跨站请求伪造保护表单类把表单渲染成HTML在视图函数中处理表单重定向和用户会话Flash消息 概述 尽管 Flask 的请求对象提供的信息足够用于处理 Web 表单,但有些任务很单调,而且要重复操作。比如,生成表单的 HTML 代码和验…

偏自相关系数的等价定义

第k个回归系数的值 原始定义

将两个YOLO格式的数据集合并,并保持相同类别

1. 需求分析 最近在做两个YOLO格式的数据集合并,第一个数据集包含了第二个数据集的类别,但是相应的类别id对应不住,需要修改第二个数据集的类别标签与第一个数据集对应住。 2. 修改第二个数据集标签对应 2.1 实现思路 导入所需的库&#x…

CCF-CSP真题题解:201409-2 画图

201409-2 画图 #include <iostream> #include <cstring> #include <algorithm> using namespace std;const int N 110;int n; bool a[N][N];int main() {scanf("%d", &n);while (n--) {int x1, y1, x2, y2;scanf("%d%d%d%d", &…

R语言的学习——day1

将数据框中某一列数据改成行名 代码 结果

社交媒体数据恢复:Skype国内、际版

恢复已删除的Skype聊天记录可能需要一些操作&#xff0c;但请注意&#xff0c;这不一定总是可行的&#xff0c;并且可能需要一些技术知识。以下是一些步骤&#xff0c;您可以尝试恢复您的Skype聊天记录&#xff1a; 1. 检查备份&#xff1a; - 如果您有Skype备份&#xff0…

Ollama配置webui连接大预言模型

Ollama配置Web UI连接大预言模型 默认ollama安装后&#xff0c;chat对话只有命令行界面&#xff0c;交互体验较差。借助open-webui可以通过web界面连接ollama&#xff0c;从而实现类似chatgpt式的web交互体验。 使用家用PC实践记录如下&#xff1a; 1. 环境配置 本次使用的操作…

智能私信软件:转化率提升的神器

在数字化营销领域&#xff0c;利用智能私信软件策略提升转化率已经成为一种不可忽视的趋势。随着人工智能技术的发展&#xff0c;这些软件变得越来越智能&#xff0c;能够根据用户的行为和偏好提供个性化的沟通体验。在这篇文章中&#xff0c;我们将探讨如何有效地运用智能私信…

启明云端2.4寸屏+ESP32-S3+小型智能调速电动家用除草机案例 触控三档调速,能显示电压故障码

今天给大家分享个启明云端2.4寸屏ESP32-S3小型智能调速电动家用除草机案例&#xff0c;国外有草坪文化&#xff0c;这个机器能智能触控三档调速&#xff0c;带屏能显示电压故障码&#xff0c;数显档位&#xff08;3档最大&#xff09;&#xff0c;触控屏&#xff0c;长按3秒就能…

git 的迁移

现象是gitlab经常会挂掉&#xff0c;linux会显示磁盘空间不足&#xff0c;实际上&#xff0c;我们linux某个目录的空间是4T。这个空间应该是足够的。猜测是gitlab的安装目录不对导致的空间不足。 1、查找原因 用rpm 安装gitlab会有自己的目录&#xff0c;很多安装文件会在opt…

Android binder死亡通知机制

在Andorid 的binder系统中&#xff0c;当Bn端由于种种原因死亡时&#xff0c;需要通知Bp端&#xff0c;Bp端感知Bn端死亡后&#xff0c;做相应的处理。 使用 Bp需要先注册一个死亡通知&#xff0c;当Bn端死亡时&#xff0c;回调到Bp端。 1&#xff0c;java代码注册死亡通知 …

使用硬盘对拷方法将数据无损转移到另一个硬盘!

硬盘对拷&#xff0c;其实就是磁盘克隆&#xff0c;很多人喜欢将其说成对拷&#xff0c;或者硬盘复制等&#xff0c;但不管怎么说&#xff0c;他们的目的都是一个&#xff0c;想要把原硬盘上的全部数据&#xff08;包括系统、程序、个人文件、隐藏配置数据等&#xff09;都无损…

mysql基础知识汇总

本文自行整理&#xff0c;只做学习记忆之用&#xff0c;若有不当之处请指出 一、数据库三层结构 &#xff08;1&#xff09;所谓安装Mysql数据库&#xff0c;就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system) &#xf…

【JVM】简述类加载器及双亲委派机制

双亲委派模型&#xff0c;是加载class文件的一种机制。在介绍双亲委派模型之前&#xff0c;我需要先介绍几种类加载器&#xff08;Class Loader&#xff09;。 1&#xff0c;类加载器 Bootstrap&#xff0c;加载lib/rt.jar&#xff0c;charset.jar等中的核心类&#xff0c;由…

港口数据复杂不知道如何监控?来试试FineVis所展现的智慧港口看板

一、智慧港口是什么 智慧港口代表着港口建设的未来趋势和发展方向。以信息物理系统为框架&#xff0c;智慧港口通过创新应用高新技术&#xff0c;实现了物流供给方和需求方之间的沟通&#xff0c;并将它们融入集疏运一体化系统中。这种系统极大地提升了港口及其相关物流园区对…

ospf路由过滤及策略实验

目录 一、实验拓扑 二、实验要求 三、实验思路 四、实验步骤 1、配置IP 2、配置RIP协议和OSPF协议 3、在R2上做双向路由引入 &#xff08;1&#xff09;进入到rip协议的1进程中引入ospf &#xff08;2&#xff09;进入到ospf协议的1进程中引入rip 4、在R2上使用acl和…
最新文章