集合类

简介: 数据结构分为线性与非线性两类。线性结构包括动态数组(如 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+ 树实现

目录
相关文章
|
4月前
|
监控 数据可视化 安全
从零开始学 Dify:搭建你的第一个 LLM 应用平台
Dify(Do It For You)是一个开源的 LLMOps 平台,专注于缩短 AI 原型与生产应用之间的距离。它通过「可视化 + API 优先」的方式,帮助开发者快速构建、测试、监控并上线基于大型语言模型(LLM)的解决方案,支持从聊天机器人、检索增强生成(RAG),再到代理 Agent 的全功能覆盖。
|
4月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
396 0
|
4月前
|
传感器 人工智能 运维
吃得安心靠AI?聊聊AI在食品供应链安全里的“神操作”
吃得安心靠AI?聊聊AI在食品供应链安全里的“神操作”
154 6
|
4月前
|
Java 编译器 Android开发
SpringBoot使用汇总
本节介绍Spring Boot开发环境搭建,包括JDK配置、项目构建与启动,以及工程结构分析。使用IDEA配置JDK的步骤:打开File→Project Structure→SDKs,设置JDK路径及名称;Eclipse用户可通过Window→Preference→Java添加JDK并保持编译器一致。
87 4
|
4月前
|
Java Maven 开发工具
SpringBoot使用汇总
本节介绍 Spring Boot 工程的构建方法,包括使用 IDEA 快速创建项目、通过官方平台生成项目、配置 Maven 以及设置编码格式等内容。涵盖 Group 和 Artifact 的填写规范、依赖添加、IDE 配置与推荐设置,助力快速搭建开发环境。
161 3
|
4月前
|
Java 应用服务中间件 Maven
SpringBoot使用汇总
本节介绍了Spring Boot项目工程结构,包含src/main/java(业务代码)、src/main/resources(静态与配置文件)和src/test/java(测试代码)。通过@SpringBootApplication注解的启动类运行main方法即可快速启动应用。Spring Boot内置Tomcat,简化配置流程。示例展示了创建Controller、访问接口及修改默认端口的方法,帮助开发者快速上手Spring Boot开发。
129 2
|
4月前
|
JSON NoSQL Shell
MongoDB简介
MongoDB 是一款开源、高性能、无模式的文档型数据库,属于 NoSQL 产品,支持灵活的 BSON 数据格式,结构类似 JSON,适合存储复杂数据。它以文档为最小存储单位,具备高性能、高可用、高扩展性,支持丰富查询及多种数据类型,适用于大规模数据场景。
409 0
|
4月前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
474 3
|
4月前
|
存储 安全 Java
synchronized 锁升级
JDK 6 引入的 synchronized 锁升级机制,通过偏向锁、轻量级锁和重量级锁的动态切换,优化了多线程同步性能。该机制根据竞争情况逐步升级锁状态,减少线程阻塞和系统调用开销,从而提升并发效率。
179 0
|
4月前
|
缓存 Java
对比 synchronized 和 volatile
`synchronized` 和 `volatile` 是 Java 并发编程中的两个关键机制,各有侧重。`synchronized` 用于实现线程的互斥访问,保证原子性、可见性和有序性,适用于需要锁的场景;而 `volatile` 更轻量,仅确保变量的可见性和有序性,适用于状态标志等无需复合操作的场景。两者可互补使用,如双重检查单例中结合二者优势。合理选择有助于提升并发性能与代码安全性。
199 0