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

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

目录

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

二,什么是数据结构?

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 主要是用来做什么用的?

完.

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

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

相关文章

【详细解答】项目经VS产品经理,有什么区别?哪个更值得选择?

最近很多人咨询“项目经理跟产品经理该怎么选,我更适合哪个?”“项目经理跟产品经理哪个更有钱途 ”“项目经理转产品经理好转吗”等等,今天就一次性说清楚项目经理跟产品经理有什么区别,应该怎么选择。 不想看长篇大论的&#x…

区块链的可拓展性研究【03】扩容整理

为什么扩容:在layer1上,交易速度慢,燃料价格高 扩容的目的:在保证去中心化和安全性的前提下,提升交易速度,更快确定交易,提升交易吞吐量(提升每秒交易量) 目前方案有&…

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

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

C++STL的vector模拟实现

文章目录 前言成员变量成员函数构造函数push_backpop_backinserterase析构函数拷贝构造 前言 成员变量 namespace but {template<class T>class vector{public:typedef T* iterator;private:iterator _start;iterator _finish;iterator _end_of_storage;}; }我们之前实…

c/c++ malloc、calloc、realloc and free

malloc 需要头文件 #include<stdlib.h> void *malloc( size_t size ); malloc returns a void pointer to the allocated space, or NULL if there is insufficient memory available. To return a pointer to a type other than void, use a type cast on the return …

【算法题】单词接龙(js)

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/7fcc5df3354742bd88dad28219f82bf8.png 用例&#xff1a; 输入&#xff1a; 0 6 word dd da dc dword d 输出&#xff1a; worddwordda 说明&#xff1a; 先确定起始单词word&#xff0c;再接以d开有的且长度最长…

Canal实时同步MySQL数据到ES

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

MATLAB运动学之蒙特卡罗法求积分与机器人工作域分析

蒙特卡罗法又叫做统计模拟法、随机抽样技术&#xff0c;是一种随机模拟方法以概率和统计理论方法为基础的一种计算方法&#xff0c;通俗来说是可以使用随机数来解决很多计算问题的一种方法&#xff0c;很直观简单&#xff0c;尤其对于一些求解积分无解的情况&#xff0c;非常好…

《Easy3d+Qt+VTK》学习

《Easy3dQtVTK》学习-1、编译与配置 一、编译二、配置注 一、编译 1、 资源下载&#xff1a;easy3d giuhub 2、解压缩 3、用qt打开CMakeLists.txt即可 4、点击项目&#xff0c;选择debug或者release&#xff0c;图中3处可自行选择&#xff0c;因为我的qt版本是6&#xff0c…

Linux上使用Python的requests库进行HTTP请求

在Linux上使用Python的requests库进行HTTP请求是一种非常方便和高效的方式。requests库是一个第三方库&#xff0c;用于发送HTTP请求并获取响应。下面是一个简单的示例&#xff0c;演示如何使用requests库发送GET请求并获取响应。 首先&#xff0c;你需要安装requests库。你可…

玩转大数据15:常用的分类算法和聚类算法

前言 分类算法和聚类算法是数据挖掘和机器学习中的两种常见方法。它们的主要区别在于处理数据的方式和目标。 分类算法是在已知类别标签的数据集上训练的&#xff0c;用于预测新的数据点的类别。聚类算法则是在没有任何类别标签的情况下&#xff0c;通过分析数据点之间的相似性…

MATLAB代码:含电热联合系统的微电网运行优化

微♥关注“电击小子程高兴的MATLAB小屋”获取专属优惠 说明书 MATLAB代码&#xff1a;含电热联合系统的微电网运行优化 关键词&#xff1a;微网 电热联合系统 优化调度 参考文档&#xff1a;《含电热联合系统的微电网运行优化》完全复现 仿真平台&#xff1a;MATLAB yalmi…

vue的小练习-翻转单词

先将字符串转成数组&#xff0c;用reverse&#xff08;&#xff09;翻转数组&#xff0c;再转成字符串 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

路由器的转换原理--ENSP实验

目录 一、路由器的工作原理 二、路由表的形成 1、直连路由 2、非直连路由 2.1静态路由 2.2动态路由 三、静态路由和默认路由 1、静态路由 1.1静态路由的缺点 1.2路由的配置--结合ensp实验 2、默认路由--特殊的静态路由 2.1概念 2.2格式 2.3默认路由的配置--ens…

MySQL中的回表

目录 1、表扫描和索引&#xff1a; 表扫描&#xff08;Table Scan&#xff09;&#xff1a; 索引&#xff1a; 2、聚簇索引 vs. 非聚簇索引&#xff1a; 聚簇索引&#xff08;Clustered Index&#xff09;&#xff1a; 非聚簇索引&#xff08;Non-clustered Index&#x…

mybatis多表映射-分步查询

1、建库建表 create database mybatis-example; use mybatis-example; create table t_book (bid varchar(20) primary key,bname varchar(20),stuid varchar(20) ); insert into t_book values(b001,Java,s001); insert into t_book values(b002,Python,s002); insert into …

焦炭冶金工艺3D可视化仿真展示更直观、形象

冶金行业作为重要的工业领域&#xff0c;其岗位实践培训一直面临着诸多挑战&#xff0c;随着web3d开发和VR虚拟仿真技术的不断创新和应用&#xff0c;冶金3D虚拟仿真实践教学平台应运而生&#xff0c;为钢铁生产培训带来了崭新的变革。 冶金3D虚拟仿真实践教学平台采用了先进的…

节日问候:在 Metaverse 中一起庆祝节日!

冬季即将来临&#xff0c;节日的脚步也越来越近&#xff0c;是时候通过 The Sandbox 中的最新活动——“节日问候”来迎接节日气氛了&#xff01;为期 43 天的庆祝活动从 12 月 11 日开始&#xff0c;到 1 月 22 日结束&#xff0c;将带领玩家穿越一个充满 60 种体验的冬季仙境…

QT中时间时区处理总结

最近项目中要做跨国设备时间校正功能&#xff0c;用到了时区时间&#xff0c;在此做一下记录。 目录 1.常见时区名 2.测试代码 3.运行效果 1.常见时区名 "Pacific/Midway": "中途岛 (UTC-11:00)", …

【NSX-T】搭建NSX-T环境 —— Lab 说明和准备工作

目录 Lab 说明VM列表IP地址规划使用192.168.1.0/24作为实验环境主IP网段使用192.168.2.0/24网段作为freenas存储网段NSX 网段 拓扑汇总vSphere 7vSphere 8 虚拟机部署顺序 准备工作 Lab 说明 VM列表 Y&#xff1a;表示已部署N&#xff1a;表示未部署 HostIPDomain NameOSServ…