Java集合框架

news2024/9/21 14:32:48

Java集合框架

在这里插入图片描述


每博一文案

《杀死一只知更鸟》中有这样一段话:“你永远不可能真正地了解一个人,除非你穿上他的鞋子走来走去,站在他的角度思考问题。
可真当你走过他的路时,你连路过都觉得难过。”
世上没有真正的感同身受,也永远不会有一模一样的境遇。
很多时候,你以为看到了全貌,但其实只有冰山一角。永远不要凭着一点蛛丝马迹,就随意评判别人的人生。
在你看不到的角落里,多的是你不知道的事。
不知别人的苦,就别劝人大度;没有经历过他人的难,就不要肆意嘲讽。

文章目录

  • Java集合框架
    • 每博一文案
    • 1. 集合简介
      • 1.1 集合和数组的区别:
    • 2. 集合的使用场景
    • 3. 集合框架概述
    • 4. Java 集合框架的好处
    • 5. 实现
    • 6. 最后:

1. 集合简介

早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。

虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Properties 类的方式有着很大不同。

集合框架被设计成要满足以下几个目标。

  • 该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。
  • 该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。
  • 对一个集合的扩展和适应必须是简单的。

为此,整个集合框架就围绕一组标准接口而设计。你可以直接使用这些接口的标准实现,诸如: LinkedList, HashSet, 和 TreeSet 等,除此之外你也可以通过这些接口实现自己的集合。

集合也称为容器,仅仅是一个对象,多个元素组成一个单元。集合用于存储、检索、操作和聚合数据。 通常,他们标识形成自然组的数据项,例如扑克牌(牌集合),邮件文件夹(字母集合)。

1.1 集合和数组的区别:

数组:

  • 数组初始化以后,长度就是确定了的,无法修改的,不便于扩展。
  • 数组声明的类型,就决定了进行元素存储的类型了,仅仅只能存储一种数据类型。
  • 数组中提供的属性和方法少,不便于进行添加,删除,插入等操作,且效率不高,同时无法直接获取存储元素的实际个数。
  • 数组存储的数据是有序的,可以重复的,存储数据的特点单一

集合:

  • 集合的长度是可变的,不足时,会自动扩容,便于扩展。
  • 集合可以存储不同的类型(其实集合一般存储的也是同一种类型),实际上集合存储的是引用对象的地址值 。所以集合只能存储一种类型引用数据类型 ,不可以存储基本数据类型(可以存储包装类)。而数组既可以存储基本数据类型,也可以存储引用数据类型。
  • 集合提供大量的属性和方法,便于添加,删除,插入,只能获取到集合中存储元素的实际个数 size()
  • Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。

2. 集合的使用场景

在这里插入图片描述

3. 集合框架概述

一个集合框架是用于表示和操作的集合统一架构。所有集合框架包含以下内容:

  • 接口

    这些是表示集合的抽象数据类型。接口允许独立于它们的表示的细节来操纵集合。在面向对象语言中,接口通常形成层次结构。

  • 实现

    这些是集合接口的具体实现。实质上,它们是可重用的数据结构。

  • 算法

    这些方法对实现集合接口的对象执行有用的计算,例如搜索和排序。算法被认为是多态的: 也就是说,相同的方法可以用于适当的收集接口的许多不同的实现。实质上,算法是可重用的功能。

Java集合可分为 Collection 和 Map 两种体系。

  • Collection 接口:单例数据,定义了存取一组对象的方法的集合。
    • List : 元素有序,可重复的集合。具体的详细内容可以移步至:🔜🔜🔜 Java Collection 接口下的 “ List 集合” 与 “ Set 集合 ”_ChinaRainbowSea的博客-CSDN博客
    • Set :元素无序,不可重复的集合。
  • Map 接口:双列数据,保存具有映射关系 ”key-value对“ 的集合。具体的详细内容可以移步至:🔜🔜🔜 Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明_ChinaRainbowSea的博客-CSDN博客

Java集合的框架图:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4. Java 集合框架的好处

Java 集合框架提供了以下好处:

  • 减少编程工作量:

    通过提供有用的数据结构和算法,集合框架可以让您专注于程序的重要部分,而不是使其工作所需的低级“管道”。 通过促进不相关的 API 之间的互操作性,Java 集合框架免除了编写适配器对象或转换代码来连接 API。

  • 提高程序速度和质量:

    这个集合框架提供了有用的数据结构和算法的高性能,高质量的实现。每个接口的各种实现是可以互换的, 所以程序可以通过切换集合实现来轻松地进行调整。由于您已经摆脱了编写自己的数据结构的苦差事, 您将有更多时间致力于提高程序的质量和性能。

  • 允许不相关的 API 之间的互操作性:

    集合接口是 APIs 来回传递集合的本地语言。如果我的网络管理 API 提供了一个节点名称的集合, 并且如果您的 GUI 工具包期望一个列标题的集合,我们的 API 将无缝地互操作,即使它们是独立编写的。

  • 减少了学习和使用新的 API 的努力:

    许多 API 自然会将输入的集合作为输出提供。过去,每个这样的 API 都有一个小的子 API 来操纵它的集合。 这些专用集合的子 API 之间几乎没有一致性,所以你必须从头学习每一个,使用它们很容易犯错误。 随着标准集合接口的出现,问题就消失了。

  • 减少设计新 API 的工作量:

    这是以前优势的另一面。设计师和实施者不必在每次创建依赖于集合的 API 时重新发明轮子; 相反,他们可以使用标准的集合接口。

  • 促进软件重用:

    符合标准集合接口的新数据结构本质上是可重用的。对于在实现这些接口的对象上运行的新算法也是如此。

5. 实现

实现是用于存储集合的数据对象,本课介绍以下几种实现:

  • 通用实现 :是最常用的实现,专为日常使用而设计。他们在标题为“通用目的实现”的表中进行了总结。
  • 特殊实现:专为在特殊情况下使用而设计,并显示非标准性能特性,使用限制或行为
  • 并发实现 :支持高并发,通常以牺牲单线程性能为代价。这些实现是 java.util.concurrent 软件包中的一部分
  • 封装器实现 : 与其他类型的实现(通常是通用实现)结合使用,以提供增加或现在的功能
  • 方便实现 : 也就是小型实现,通常通过静态工厂方法提供,为特殊集合(例如单例集)的通用实现提供方便,高效的替代
  • 抽象实现 : 便于构建定制实现的骨架实现。稍后在“自定义集合的实现”中进行介绍。一个高级的话题,这不是特别困难,但相对少的人需要做。

通用实现被总结在下表

接口哈希表可变数组平衡二叉树链表哈希表+链表
SetHashSet-TreeSet-LinkedHashSet
List-ArrayList-LinkedList-
Deque-ArrayDeque-LinkedList-
MapHashMap-TreeMap-LinkedHashMap
Queue-----

正如你可以从表中看到,Java 集合框架提供了几种通用的实现 Set, List 以及 Map。

6. 最后:

限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!!!
在这里插入图片描述

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

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

相关文章

数据结构 第六章 二叉树与树(树和森林)

1 双亲表示法(方便查找双亲) 使用层次遍历的方法将一个树中的所有结点存储到一维数组中 2 孩子表示法(方便查找孩子) 顺序链式存储结构: 1 使用数组来存储所有结点 2 为每一个结点来设置一个单链表 3 单链表链接的是其所有孩子结点的下标3 双亲孩子结合表示法 …

扬兴 | 选型技巧!晶振在商业显示屏的应用

据有关机构预计,未来五年,商显市场将以每年13-16%的增速发展,预计到2024年将达到1545亿元的规模。伴随着商显屏行业的飞速发展,必然带动电子元器件行业的增长,这也对元器件产品要求不断提高,其中晶振作为数…

【字符串】剑指Offer 05.替换空格(C/C++/Java/Python/Js)

剑指Offer 05.替换空格1 题目2 思路--双指针法3 代码3.1 C版本3.2 C版本3.3 Java版本3.4 Python3版本3.5 JavaScript版本4 总结1 题目 题源链接 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s “We are…

重磅!马斯克再抛特斯拉股票,去年中国市场份额首次下滑

特斯拉的走势,正在凸显智能电动汽车市场格局的新变化。 几周前,特斯拉首席执行官埃隆马斯克出售了价值近36亿美元的股票,就在三周前,这家全球智能电动汽车领头羊宣布未能实现年度交付目标(少了近2.2万辆)。…

windows下同时安装mysql5.5和mysql8.0.32

一、安装mysql8.0.32 我先安装的是mysql5.5,如:MySQL5.5安装教程SQLyog安装_柒七的博客-CSDN博客_mysql5.5的安装步骤 1.下载解压 https://dev.mysql.com/downloads/mysql/ 2.创建配置 下载完后,建议解压到一个没有中文的路径&#xff0…

Vue使用ElementUI动态修改table单元格背景颜色或文本颜色

前言 今天遇到一个场景,表格行属性的字典项要针对不同的状态,展示不同的文本颜色,如下图所示: 账号状态这一栏,如果是正常就展示以绿色字体展示,如果是禁用就以红色颜色展示 针对这个需求,我第…

u盘文件被电脑杀毒软件删掉了,怎么才能恢复

案例分享:【我的u盘中毒文件被电脑杀毒软件删掉了,怎么才能恢复啊??里面有很重要的资料。求高手指点!急!!!】——虽然u盘能够存储数据,且体积小巧便于携带,但…

算法:(十二)排序

文章目录12.1 计数排序面试题75:数组相对排序12.2 快速排序面试题76:数组中第k大的数12.3 归并排序面试题77:链表排序面试题78:合并排序链表12.1 计数排序 面试题75:数组相对排序 题目: 给定两个数组&…

UNIAPP实战项目笔记57 发送手机验证码 接入短信SDK

UNIAPP实战项目笔记57 发送手机验证码 接入短信SDK 注册时候需要发送验证 通过验阿里云或腾讯云等短信sdk供应商 实际案例图片 后端接口文件 index.js var express require(express); var router express.Router(); var connection require(../db/sql.js); var user requi…

龙芯处理器7A2000桥片iTOP-3A5000开发板

龙芯处理器7A2000桥片iTOP-3A5000开发板 主要参数 处理器: 龙芯3A5000 主频: 2.3GHz-2.5GHz 桥片: 7A2000 内存: 8GB、16GB DDR4带ECC纠错(配置可选) 系统: Loongnix 典型功耗: 35W 核心板: 16层 底板: 4层 核心板参数 尺寸: 125*95mm C…

力扣二叉树篇题

题目说明B树如果为空树则不是A树的子结构 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class Solution {public boolean isSubStructure(TreeNode A,…

VMware ESXi 7.0 Update 3j 更新发布,修复已知问题

VMware ESXi 7.0 Update 3j Standard & All Custom Image for ESXi 7.0 U3j Install CD 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 产品简介…

迁移mysql数据库到opengauss

一、安装chameleon工具1.下载源码git clone gitgitee.com:opengauss/openGauss-tools-chameleon.git2.创建Python虚拟环境并激活安装依赖:yum install mysql-devel gcc gcc-devel python-develpython3 -m venv venvsource venv/bin/activate3.进入代码的目录&#x…

CAD转PDF其实很简单,掌握这4种方法就可以

Hello,大家好,这里是建模助手! CAD作为一种绘图格式,在工业设计领域发挥着不可替代的作用,一般有DXF、DWG两种常见的格式,但是一般需要在电脑中安装特定软件才能打开此类格式的文件。 因此大多数人在给别…

网站表单实时通知 销售线索不错漏

对于企业来说,在进行产品发布或营销推广时,都需要大量的信息收集汇总。此时都会用到表单功能,网站上的表单功能应用非常广泛,可做信息收集效果,可做付费预约效果等,而如果希望能实时推送表单收集到的数据&a…

AQS(AbstractQueuedSynchronizer)是什么?

目录简介原理概览资源的共享方式独占(Exclusive)共享(Shared)模板方法模式在AQS中的应用经典应用ReentrantLockSemaphore简介 AQS全称AbstractQueuedSynchronizer,位于java.util.concurrent.locks包下,它是…

Kubernetes (k8s)在企业项目中的重点应用场景以及云原生和云架构的原理

Kubernetes (k8s)在企业项目中的重点应用场景以及云原生和云架构的原理。 Kubernetes,简称 K8s,是用 8 代替中间 8 个字符 “ubernete” 而成的缩写,是一个开源的,用于管理云平台中多个主机上的容器化的应…

Allegro因为DRC报错无法使用走线居中命令的解决办法

Allegro因为DRC报错无法使用走线居中命令的解决办法 在用Allegro做PCB设计的时候,走线居中是非常实用的功能 但是这个功能只能在走线居中不会产生DRC的使用。 如果居中后仍然存在DRC,比如间距,等长等等DRC,如下图: 使用居中命令就会出现报错,如图,因为居中后线距离孔的…

图文详解Linux中的火墙策略优化

目录 前言 一、火墙管理工具切换 二、iptables 的使用 三、火墙默认策略 四、firewalld的使用 1、firewalld的开启 2、关于firewalld的域 3、关于firewalld的设定原理及数据存储 4、firewalld的管理命令 5、firewalld的高级规则 6、firewalld中的NAT 总结 前言 火…

【软件测试】性能测试面试题分析与回答,你的优势不止这些......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 软件测试这一岗已悄…