学习数据结构第一步(必看)——初识集合框架

一,学习数据结构前置知识

目录

一,学习数据结构前置知识

二,什么是数据结构?

1.什么是数据结构?

2.容器背后对应的数据结构

3.相关Java知识

4.什么是算法?

三,什么是集合?

四,集合框架的重要性


学习数据结构首先我们需要了解集合与数据结构

二,什么是数据结构?

1.什么是数据结构?

一提及数据结构我们就会想到算法,那数据结构和算法有何关系?其实这两个玩意是相辅相成的,一个好的算法离不开好的数据结构,而我们学数据结构的目的就是为了能够体现在算法上,能够更好的应用。

面对数据结构这个词,我们很容易误以为它是什么比较高大上的玩意儿,其实不然,我们可以简单理解成数据 + 结构,主要用来描述和组织数据。比如说,我们有十万个用户信息,那这些信息我们如何去描述和组织起来?答案就是使用数据结构这个东西。

例如:数组就是一种简单的数据结构(数组也是用于描述和组织一组数据)

数据结构又有很多种,在不同的场景使用不同的数据结构会加快我们程序运行的效率。

总结:数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。

注意:数据结构是一门单独的学科,它和语言没有关系(博主以后会使用Java来写数据结构),理解思想很重要,它能锻炼你的逻辑思维。

2.容器背后对应的数据结构

该阶段,我们主要学习以下容器,每个容器其实都是对某种特定数据结构的封装,大概了解一下,后序会给大家详细讲解并模拟实现:
1. Collection 是一个接口,包含了大部分容器常用的一些方法
2. List 是一个接口,规范了 ArrayList LinkedList 中要实现的方法
•   ArrayList: 实现了 List 接口,底层为动态类型顺序表
•   LinkedList:实现了 List 接口,底层为双向链表
3. Stack :底层是栈,栈是一种特殊的顺序表
4. Queue :底层是队列,队列是一种特殊的顺序表
5. Deque :是一个接口
6. Set :集合,是一个接口,里面放置的是 K 模型
•   HashSet:底层为哈希桶,查询的时间复杂度为 O(1)
•   TreeSet:底层为红黑树,查询的时间复杂度为 O(),关于 key 有序的
7. Map :映射,里面存储的是 K-V 模型的键值对
•   HashMap:底层为哈希桶,查询时间复杂度为 O(1)
•   TreeMap:底层为红黑树,查询的时间复杂度为 O(),关于 key 有序

3.相关Java知识

1. 泛型 Generic
2. 自动装箱 autobox 和自动拆箱 autounbox
3. Object 的 equals 方法
4. Comparable 和 Comparator 接口

4.什么是算法?

算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。

三,什么是集合?

Java会将一些数据结构封装起来满足我们对一些基础数据结构的需求。而如果集合当中不包含需要使用的数据结构时,这个时候就得我们自己动手写了。

官方教程

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。
其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储 store 、检索 retrieve 、管理 manipulate ,即平时我们俗称的增删查改 CRUD 。
例如,一副扑克牌(一组牌的集合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等。
类和接口总览
整理一下

四,集合框架的重要性

1. 开发中的使用
•   使用成熟的集合框架,有助于我们便捷、快速的写出高效、稳定的代码
•   学习背后的数据结构知识,有助于我们理解各个集合的优缺点及使用场景
2. 笔试及面试题
腾讯-Java后台开发面经
1. HashMap 了解不,介绍一下,如果一个对象为 key 时,hashCode 和 equals 方法的用法要注意什么?
2. HashSet 和 HashMap 的区别是什么?
3. HashMap 是线程安全的么?那需要线程安全需要用到什么?
阿里巴巴-Java后台开发面经
1. ArrayList 和 LinkedList 的区别是什么?
2. 有了解过 HashMap 的具体实现么?
3. HashMap 和 ConcurrentHashMap 哪个效率更高?
今日头条-Java后台开发面经
1. 编程题:判断一个链表是否是一个回文链表。
2. Redis 的 zset 类型对应到 java 语言中大致是什么类型?
3. hashCode 主要是用来做什么用的?

完.

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

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

相关文章

【lombok】从easyExcel read不到值到cglib @Accessors(chain = true)隐藏的大坑

背景: 在一次使用easyExcel.read 读取excel时,发现实体类字段没有值,在反复测试后,发现去掉Accessors(chain true)就正常了,为了验证原因,进行了一次代码跟踪 由于调用链路特别长,只列举出部分代码&#x…

Halcon参考手册语义分割和边缘提取知识总结

1.1 语义分割和边缘提取介绍 通过语义分割,我们使用深度学习(DL)网络将输入图像的每个像素分配给一个类。 图(1)语义分割示例 在图(1)中,输入图像的每个像素都被分配给一个类,但是苹果的三个不同实例和橘子的两个不同实例都不是可区分的对象…

Canal实时同步MySQL数据到ES

一、canal简介 canal主要用途是对MySQL数据库增量日志进行解析,提供增量数据的订阅和消费,简单说就是可以对MySQL的增量数据进行实时同步,支持同步到MySQL、Elasticsearch、HBase等数据存储中去。 早期阿里巴巴因为杭州和美国双机房部署&…

typescript个人学习笔记

https://ts.xcatliu.com/basics/primitive-data-types.html 深受启发 1.剑谱第一页,初始化ts outDir表示把ts编译成js文件,文件编译后存放的位置 2.类型声明 undefined可以赋值给其他类型

企业电子招投标采购系统源码之鸿鹄电子招投标系统+电子招投标的组成

鸿鹄招投标系统的功能描述 1、门户管理:用户可通过门户页面查看所有公告信息及相关通知信息,包括招标公告、非招标公告、系统通知和政策法规等板块。 2、立项管理:企业用户可以对需要采购的项目进行立项申请,并提交审批&#xff0…

1013 数素数

令 Pi​ 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM​ 到 PN​ 的所有素数。 输入格式: 输入在一行中给出 M 和 N,其间以空格分隔。 输出格式: 输出从 PM​ 到 PN​ 的所有素数,每 10 个数字占 1 行&…

【Cisco Packet Tracer】路由器实验 静态路由/RIP/OSPF/BGP

本教程讲解路由器的静态IP配置、RIP、OSPF、BGP等实验内容。 一、基本设置 绘制以下拓扑结构: PC0设置: PC1设置: Router0端口0设置: Router0端口1设置: Router1端口0设置: Router1端口1设置&#xff1a…

mysql数据库学习笔记(2)

又是学习数据库的一天,今天学的不多,昨天主要是对数据库进行各种操作,今天对表进行各种操作,挺有意思的,让我们一起看看都有哪些内容。 1.表操作-修改 (1)添加字段 ALTER TABLE 表名 ADD 字段名 类型(长度…

LAMP安装部署网站

目录 什么是LAMP? 实验(搭建一个论坛) 一,安装apache 1.关闭防火墙,将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包 3.配置软件模块 4.编译及安装 5.优化配置文件路径,并把httpd服务的可执行程序文件…

跨国企业在跨境数据传输时需要注意的几点

对于跨国企业而言,跨境数据传输是一个极为关键的组成部分。这不仅涉及到数据的安全性、合规性和效率,还直接关系到企业的竞争力和未来发展前景。因此,在进行跨境数据传输时,企业需要特别关注以下几个关键点,并采取相应…

Geotrust中的dv ssl证书

DV SSL数字证书是入门级的数字证书,Geotrust的子品牌RapidSSL旗下的SSL数字证书产品都是入门级的SSL数字证书——DV基础型单域名SSL证书和DV基础型通配符SSL证书。今天就随SSL盾小编了解Geotrust旗下的DV SSL证书。 1.Geotrust旗下的DV基础型单域名SSL证书能够保护…

程序员的养生指南?可不只是身体上面的哟?

程序员是一种常见的职业,也是一种充满挑战和压力的职业。程序员需要长时间地坐在电脑前,编写、调试、优化代码,解决各种复杂的问题。这样的工作方式不仅对身体造成了负担,也对心理产生了影响。因此,程序员需要注意自己…

浪涌Surge整改的意义与分析?|深圳比创达电子EMC

浪涌Surge是指电器开关或突变引起的短暂电流过高的现象。当电器设备在开关、中断或突变的瞬间,电流会剧烈变化,造成电压的瞬时上升,这就是浪涌Surge。 在日常生活中,浪涌Surge可能会导致电器设备的损坏,或者对人身安全…

【Proteus仿真】【STM32单片机】定时智能插座开关

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使LCD1602液晶,DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能: 系统运行后,LCD1602…

1032 挖掘机技术哪家强

为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。 输入格式: 输入在第 1 行给出不超过 105 的正整数 N,即参赛人数。随后 N 行,每行给出一位参赛者的信息和成绩…

js 生成分享码或分享口令

代码 function getShareToken(length) {var characters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789;var shareToken ;for (var i 0; i < length; i) {var randomIndex Math.floor(Math.random() * characters.length);var randomChar character…

虚拟机(VMs)和容器(联系区别)

虚拟机&#xff08;VMs&#xff09;和容器是两种常用的虚拟化技术&#xff0c;它们在创建和部署应用程序方面有着不同的方法和优势。 一、联系&#xff1a; 隔离性&#xff1a;虚拟机和容器都提供了运行环境的隔离&#xff0c;允许在同一硬件上运行多个隔离的应用实例。可移植…

python实战演练之迎接冬至的第一场雪

写在前面 WINTER IS COMING Python实现大雪纷飞的效果&#xff0c;完整代码在文末哦~ 准备开始 WINTER IS COMING Python是一种高级编程语言&#xff0c;Turtle是Python的一个图形化模块&#xff0c;它可以帮助学习者更好地理解编程概念&#xff0c;同时可以进行图形化编程。 …

YOLOv8改进实验:一文了解YOLOv8如何打印FPS指标

💡该教程为改进YOLOv8指南,属于《芒果书》📚系列,包含大量的原创首发改进方式🚀 💡🚀🚀🚀本博客内含改进源代码,按步骤操作运行改进后的代码即可 💡更方便的统计更多实验数据,方便写作 新增YOLOv8打印FPS指标 完善(一键YOLOv8打印FPS指标) 文章目录 完善…

简单的小题集(九)

文章目录 一、座位安排与查询二、Dfs 简单签到题 一、座位安排与查询 &#xff1a;Du 老师监考一向严格&#xff0c;期末监考又轮到他监考&#xff0c;当他走进教室的时候发现很 多人在窃窃私语&#xff0c;为了维护良好的考场秩序&#xff0c;他随机给学生分配了座位和编号。…