集合类

简介: 数据结构分为线性与非线性两类。线性结构包括动态数组(如 ArrayList)、链表(如 LinkedList)、栈与队列,适用于顺序存储与操作。非线性结构如优先级队列(如 PriorityQueue)基于堆实现,适合任务调度;哈希表(如 HashMap)用于快速查找;红黑树(如 TreeMap)和跳表(如 ConcurrentSkipListMap)支持高效有序操作;B+ 树常用于数据库索引。不同结构适用于不同场景,提升程序性能。

你知道的数据结构有哪些
线性结构
● 动态数组:相对于普通数组可以扩容
○ java 中 ArrayList 就属于动态数组
○ 数组的特点是其中元素是连续存储的
● 链表:由多个节点链在一起
○ java 中的 LinkedList 就属于链表
○ 链表的特点是其中元素是不连续存储的,每次需要根据当前节点,才能找到相邻节点
● 栈:符合 First In Last Out(先进后出)规则
○ java 中的 LinkedList 可以充当栈
○ 它的 push 方法向栈顶添加元素
○ 它的 pop 方法从栈顶移除元素
○ 它的 peek 方法从栈顶获取元素(不移除)
● 队列:符合 First In First Out(先进先出)规则
○ java 中 LinkedList 也可以充当队列
○ 它的 offer 方法用来向队列尾部添加元素(入队)
○ 它的 poll 方法用来从队列头部移除元素(出队)
非线性结构
● 优先级队列:在队列基础上增加了优先级,队列会根据优先级调整元素顺序,保证优先级高的元素先出队
○ java 中 PriorityQueue 可以作为优先级队列
○ 它底层用大顶堆或小顶堆来实现
○ 它适用于实现排行榜、任务调度等编码
○ 它特别适合于流式数据的处理,利用它能够大大节省内存
● Hash 表(哈希表,也叫散列表):由多对 key - value 组成,会根据 key 的 hash 码把它们分散存储在数组当中,其中 key 的 hash 码与数组索引相对应
○ java 中的 HashMap,Hashtable 都属于哈希表
○ 它特别适用于实现数据的快速查找
● 红黑树:可以自平衡的二叉查找树,相对于线性结构来说,拥有更好的性能
○ java 中的 TreeMap 属于红黑树
● 跳表:多级链表结构,也能达到与红黑树同级的性能,且实现更为简单
○ java 中的 ConcurrentSkipListMap 用跳表结构实现
○ redis 中的 SortedSet 也是用跳表实现
● B+ 树:可以自平衡的 N 叉查找树
○ 关系型数据库的索引常用 B+ 树实现

目录
相关文章
|
5月前
|
机器学习/深度学习 运维 NoSQL
运维人不再“救火”:数据驱动才是主动运维的底气
运维人不再“救火”:数据驱动才是主动运维的底气
111 7
|
5月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
481 0
|
5月前
|
传感器 人工智能 运维
吃得安心靠AI?聊聊AI在食品供应链安全里的“神操作”
吃得安心靠AI?聊聊AI在食品供应链安全里的“神操作”
258 6
|
5月前
|
Java 编译器 Android开发
SpringBoot使用汇总
本节介绍Spring Boot开发环境搭建,包括JDK配置、项目构建与启动,以及工程结构分析。使用IDEA配置JDK的步骤:打开File→Project Structure→SDKs,设置JDK路径及名称;Eclipse用户可通过Window→Preference→Java添加JDK并保持编译器一致。
118 4
|
5月前
|
Java Maven 开发工具
SpringBoot使用汇总
本节介绍 Spring Boot 工程的构建方法,包括使用 IDEA 快速创建项目、通过官方平台生成项目、配置 Maven 以及设置编码格式等内容。涵盖 Group 和 Artifact 的填写规范、依赖添加、IDE 配置与推荐设置,助力快速搭建开发环境。
171 3
|
5月前
|
Java 应用服务中间件 Maven
SpringBoot使用汇总
本节介绍了Spring Boot项目工程结构,包含src/main/java(业务代码)、src/main/resources(静态与配置文件)和src/test/java(测试代码)。通过@SpringBootApplication注解的启动类运行main方法即可快速启动应用。Spring Boot内置Tomcat,简化配置流程。示例展示了创建Controller、访问接口及修改默认端口的方法,帮助开发者快速上手Spring Boot开发。
164 2
|
5月前
|
监控 数据可视化 安全
从零开始学 Dify:搭建你的第一个 LLM 应用平台
Dify(Do It For You)是一个开源的 LLMOps 平台,专注于缩短 AI 原型与生产应用之间的距离。它通过「可视化 + API 优先」的方式,帮助开发者快速构建、测试、监控并上线基于大型语言模型(LLM)的解决方案,支持从聊天机器人、检索增强生成(RAG),再到代理 Agent 的全功能覆盖。
|
5月前
|
缓存 Java 关系型数据库
共享锁
共享锁允许多个线程同时读取共享资源,写操作时阻塞其他线程,通过“读共享、写独占”策略提升并发性能,适用于读多写少场景,如缓存、数据库查询等。
171 0
|
5月前
|
缓存 Java
对比 synchronized 和 volatile
`synchronized` 和 `volatile` 是 Java 并发编程中的两个关键机制,各有侧重。`synchronized` 用于实现线程的互斥访问,保证原子性、可见性和有序性,适用于需要锁的场景;而 `volatile` 更轻量,仅确保变量的可见性和有序性,适用于状态标志等无需复合操作的场景。两者可互补使用,如双重检查单例中结合二者优势。合理选择有助于提升并发性能与代码安全性。
249 0
|
5月前
|
Java Spring
聊聊你对SpringBoot框架的理解 ?
SpringBoot是Spring家族中流行的子项目,旨在简化Spring框架开发的繁琐配置。它主要提供三大功能:starter起步依赖简化依赖管理,自动配置根据条件创建Bean,以及内嵌Web服务器支持Jar包运行,极大提升了开发效率。
176 0

热门文章

最新文章