【数据结构 |集合框架、泛型】初始集合框架、时间(空间)复杂度、简单认识泛型

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 
🎈🎈作者主页: 🎈丠丠64-CSDN博客🎈


✨✨ 帅哥美女们,我们共同加油!一起进步!✨✨ 

目录

集合框架

时间复杂度

大O渐进表示法:

空间复杂度

包装类

1.装箱和卸箱

泛型

1.泛型的定义

2.擦除机制

3.泛型的上届

4.泛型方法 


集合框架

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes。

集合框架是由不同的很多类组成的一个集合,而不同类的背后有着不同的数据结构(数据 + 结构)储存、组织数据的方式不一样

  • Collection是一个接口,包含了大部分容器常用的一些方法
  • List是一个接口,规范了ArrayList LinkedList中要实现的方法
  • ArrayList实现了List接口,底层为动态类型顺序表
  • LinkedList:实现了List接口,底层为双向链表
  • Stack:底层是栈,栈是一种特殊的顺序表
  • Queue:底层是队列,队列是一种特殊的顺序表
  • Deque:是一个接口
  • Set:集合,是一个接口,里面放置的是K模型
  • HashSet:底层为哈希桶,查询的时间复杂度为O(1)
  • TreeSet:底层为红黑树,查询的时间复杂度为O( log2N),关于key有序的
  • Map:映射,里面存储的是K-V模型的键值对
  • HashMap:底层为哈希桶,查询时间复杂度为O(1)
  • TreeMap:底层为红黑树,查询的时间复杂度为O( log2N),关于key有序

时间复杂度

时间复杂度用来决定算法所需要的运行速度。

算法的时间复杂度是一个数学函数,算法中基本操作的执行次数,为算法的时间复杂度。 

大O渐进表示法:

我们不一定要计算精准的执行次数,而只需要大概算出大概执行次数

O 符号( Big O notation ):是用于描述函数渐进行为的数学符号
使用方法:
  • 用常数一取代运行时间里全部的加法常数
  • 在修改后运行次数函数中只保留最高项
  • 如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O

通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数,在实际中一般情况关注的是算法的最坏运行情况(N次找到)

所以该时间复杂度为


空间复杂度

空间复杂度用来决定算法所需要的额外空间,空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法


包装类

Java 中,由于基本类型不是继承自 Object ,为了在泛型代码中可以支持基本类型, Java 给每个基本类型都对应了一个包装类型。
基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

1.装箱和卸箱

装箱:装箱操作,新建一个 Integer 类型对象,将 i 的值放入对象的某个属性中

拆箱:拆箱操作,将 Integer 对象中的值取出,放到一个基本数据类型中

 int a = 10;//显示转型Integer b = Integer.valueOf(a);//自动拆箱Integer b = a;Integer c = 10;//显示转型int d = c.intValue();//自动装箱int d = c;
我们再了看这样一个代码

 它的结果却是

为什么会这样呢,我们看一下valueoff的源代码

我们发现底层是一个cache的数组 ,[-128, 127]范围内的整型数据装入下标为[0,255]范围内


泛型

就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化

我们都知道Object是所有类的父类,于是我们用它来接受数据类型

我们发现数组array可以存放不同类型的值了,但是如果我们拿一个东西接受的话却发生了报错

 我们发现get方法所返回的值为父类Object,要拿整形或者字符串接受的话需要强制类型转换


1.泛型的定义

这样问题虽然解决了 但是很繁琐,于是就有了泛型!!!

 类名后的 <T> 代表占位符,表示当前类是一个泛型类

泛型类是不可以实例化一个对象的(会报错) 

将上面代码改为泛型类以后,就只可以输入对应的类型,存储数据是也不需要发生强转因为已经指定了类型,指定了什么类型就只能放什么类型(并且尖括号当中只能是引用类型不能是基本类型)


2.擦除机制

在编译的过程当中,将所有的T 替换为 Object 这种机制,我们称为: 擦除机制
Java的泛型机制是在编译级别实现的。编译器生成的字节码在运行期间并不包含泛型的类型信息,
运行期间没有泛型的概念!!!!!!

3.泛型的上届

当我们在泛型类后面加一个extends(在这里是  扩展的意思),表示类型上边界,即必须是该边界或边界的子类,没有指定类型边界 E,可以视为 E extends Object

我们给T加入一个边界Numbers,于是String不是他的子类立马报错!

4.泛型方法 

有了泛型类,就会有泛型方法,与泛型类大同小异,泛型方法可以声明为 static 的,并且与普通的静态方法是一样的

方法限定符 < 类型形参列表 > 返回值类型 方法名称 ( 形参列表 ) { ... }

希望对你有帮助

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

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

相关文章

学习AI 机器学习,深度学习需要用到的python库

学习人工智能&#xff08;AI&#xff09;时&#xff0c;Python是最流行的编程语言之一。以下是一些常用的Python库和工具&#xff0c;它们可以帮助你入门并深入学习AI和机器学习&#xff1a; 数据处理和分析库 NumPy: 用于处理大型多维数组和矩阵运算&#xff0c;并提供数学函…

【启明智显彩屏应用】Model3A 7寸触摸彩屏的充电桩应用方案

一、充电桩概述 &#xff08;一&#xff09;充电桩诞生背景 随着社会的进步和人们生活质量的提升&#xff0c;汽车已逐渐融入每个家庭的日常生活中。然而&#xff0c;汽车数量的激增也带来了严重的环境污染问题&#xff0c;特别是尾气排放。为了应对这一挑战&#xff0c;新能源…

详解 Flink Table API 和 Flink SQL 之函数

一、系统内置函数 1. 比较函数 API函数表达式示例Table API&#xff0c;>&#xff0c;<&#xff0c;!&#xff0c;>&#xff0c;<id1001&#xff0c;age>18SQL&#xff0c;>&#xff0c;<&#xff0c;!&#xff0c;>&#xff0c;<id‘1001’&…

用PlayCanvas打造一个3D模型

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于 PlayCanvas 的 3D 物理场景开发 应用场景介绍 PlayCanvas 是一款功能强大的 3D 引擎&#xff0c;可用于创建各种类型的 3D 体验&#xff0c;包括游戏、模拟和交互式可视化。本技术博客将介绍如何使用 Pl…

怎么把wma格式转化为mp3格式?四种wma格式转成MP3格式的方法

怎么把wma格式转化为mp3格式&#xff1f;转换WMA格式音频文件为MP3格式是一个常见的需求&#xff0c;尤其是在我们希望在不同设备或平台上播放音频时。WMA格式虽然在Windows系统中较为常见&#xff0c;但在其他平台上的兼容性可能不如MP3格式。因此&#xff0c;将WMA转换为MP3是…

基于Spring Boot的智能分析平台

项目介绍&#xff1a; 智能分析平台实现了用户导入需要分析的原始数据集后&#xff0c;利用AI自动生成可视化图表和分析结论&#xff0c;改善了传统BI系统需要用户具备相关数据分析技能的问题。该项目使用到的技术是SSMSpring Boot、redis、rabbitMq、mysql等。在项目中&#…

在 Wed 中应用 MyBatis(同时使用MVC架构模式,以及ThreadLocal 事务控制)

1. 在 Wed 中应用 MyBatis&#xff08;同时使用MVC架构模式&#xff0c;以及ThreadLocal 事务控制&#xff09; 文章目录 1. 在 Wed 中应用 MyBatis&#xff08;同时使用MVC架构模式&#xff0c;以及ThreadLocal 事务控制&#xff09;2. 实现步骤&#xff1a;1. 第一步&#xf…

Vulnhub-DC-1,7

靶机IP:192.168.20.141 kaliIP:192.168.20.128 网络有问题的可以看下搭建Vulnhub靶机网络问题(获取不到IP) 前言 1和7都是Drupal的网站&#xff0c;只写了7&#xff0c;包含1的知识点 信息收集 用nmap扫描端口及版本号 进入主页查看作者给的提示&#xff0c;不是暴力破解的…

nodejs湖北省智慧乡村旅游平台-计算机毕业设计源码00232

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;旅游行业当然也不能排除在外。智慧乡村旅游平台是以实际运用为开发背景&#xff0c;运用软件工程开发方法&#xff0c;采…

Weighted A* 改进型(1):XDP

本文的主要内容来自于文献[1]&#xff0c;总的来说这篇文献给我的感觉就是理论证明非常精妙&#xff0c;最后的实际效果也是提升的非常明显。 在Introduction中作者给出了一般Best first search&#xff08;BFS&#xff0c;常用的包括A *&#xff0c;weighted A * &#xff0c…

TK防关联引流系统:全球多账号运营,一“键”掌控!

在TikTok的生态系统中&#xff0c;高效管理多个账号对于品牌推广的成功起着决定性的作用。TK防关联引流系统&#xff0c;作为一款专门为TikTok用户打造的强大工具&#xff0c;为全球范围内的多账号运营提供了坚实的支持。 TK防关联引流系统的核心优势体现在以下几个方面&#x…

2024.6.13

2024.6.13 【痛苦的&#xff0c;热烈的&#xff0c;误解的&#xff0c;无解的&#xff0c;快乐的&#xff0c;解脱的】 Thursday 五月初八 <theme oi-“game theory”> P4018 Roy&October之取石子 Roy&October之取石子 题目背景 Roy 和 October 两人在玩一个…

anaconda安装pytorch-快速上手99%可以(可以虚拟环境OR不进行虚拟环境)

一、预备工作 先检查自己是否有anaconda 在cmd里面输入conda --version查看 二、在anaconda中创建虚拟环境 1.1 打开Anaconda Prompt 1.2 进行自定义安装python 将其中的自定义地址和版本换成自己想安装的地址和版本 我这里安装的地址是E:\Anaconda\DL,python版本是3.8.3…

uniapp地图自定义文字和图标

这是我的结构&#xff1a; <map classmap id"map" :latitude"latitude" :longitude"longitude" markertap"handleMarkerClick" :show-location"true" :markers"covers" /> 记住别忘了在data中定义变量…

Vue页面生成PDF后调起浏览器打印

一、安装依赖 首先&#xff0c;需要安装 html2canvas 和 jsPDF 库。 npm install html2canvas jspdf二、创建公共方法引入 在utils文件夹下创建两个文件分别为pdfExport.js和printPDF.js&#xff0c;代码如下&#xff1a; pdfExport.js import html2canvas from html2canv…

Python PDF转化wolrd代码怎么写

将PDF文件转换为Word文档的过程通常需要使用一些外部库来实现&#xff0c;因为Python本身并不直接支持这种转换。一个常用的库是pdf2docx&#xff0c;它可以帮助我们将PDF文件转换为Word文档格式。以下是使用pdf2docx库将PDF转换为Word的基本步骤&#xff1a; 首先&#xff0c;…

云顶之弈-测试报告

一. 项目背景 个人博客系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。前端主要有四个页面构成&#xff1a;登录页、列表页、详情页以及编辑页&#xff0c;以上模拟实现了最简单的个人博客系统。其结合后…

Sqoop学习详细介绍!!

一、Sqoop介绍 Sqoop是一款开源的工具&#xff0c;主要用于在Hadoop(HDFS/Hive/HBase)与传统的数据库(mysql、postgresql...)间进行数据的传递&#xff0c;可以将一个关系型数据库&#xff08;例如 &#xff1a; MySQL ,Oracle ,Postgres等&#xff09;中的数据导进到Hadoop的H…

虚拟声卡实现音频回环

虚拟声卡实现音频回环 一、电脑扬声器播放声音路由到麦克风1. Voicemeeters安装设置2. 音频设备选择 二、回声模拟 一、电脑扬声器播放声音路由到麦克风 1. Voicemeeters安装设置 2. 音频设备选择 以腾讯会议为例 二、回声模拟 选中物理输入设备“Stereo Input 1”和物理输出设…

GlusterFS企业分布式存储

GlusterFS 分布式文件系统代表-nfs常见分布式存储Gluster存储基础梳理GlusterFS 适合大文件还是小文件存储&#xff1f; 应用场景术语Trusted Storage PoolBrickVolumes Glusterfs整体工作流程-数据访问流程GlusterFS客户端访问流程 GlusterFS常用命令部署 GlusterFS 群集准备环…