news 2026/4/16 11:55:37

Java 中的数据结构详解及应用场景

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 中的数据结构详解及应用场景

Java 数据结构详解

Java 提供了丰富的内置数据结构,主要通过集合框架实现。以下详细介绍常用数据结构的操作和应用场景。

1. 数组 (Array)

操作示例

// 创建数组int[]numbers=newint[5];// 默认值为0String[]names={"Alice","Bob","Charlie"};// 直接初始化// 添加/修改元素numbers[0]=10;numbers[1]=20;// 遍历数组for(inti=0;i<names.length;i++){System.out.println(names[i]);}// 增强for循环遍历for(Stringname:names){System.out.println(name);}

应用场景

存储固定数量的学生考试成绩,便于快速通过索引访问特定学生的分数。

2. 列表 (List)

操作示例

// 创建ArrayListList<String>fruits=newArrayList<>();// 添加元素fruits.add("Apple");fruits.add("Banana");fruits.add(1,"Orange");// 在指定位置插入// 移除元素fruits.remove("Apple");// 按对象移除fruits.remove(0);// 按索引移除// 遍历for(Stringfruit:fruits){System.out.println(fruit);}// 创建LinkedListList<Integer>linkedList=newLinkedList<>();linkedList.add(1);linkedList.add(2);((LinkedList<Integer>)linkedList).addFirst(0);

应用场景

购物车商品管理,支持动态增删商品和保持添加顺序。

3. 集合 (Set)

操作示例

// 创建HashSetSet<String>uniqueNames=newHashSet<>();// 添加元素uniqueNames.add("John");uniqueNames.add("Jane");uniqueNames.add("John");// 重复元素不会被添加// 移除元素uniqueNames.remove("Jane");// 遍历for(Stringname:uniqueNames){System.out.println(name);}

应用场景

记录网站独立访客IP地址,自动去重统计唯一访问用户数。

4. 映射 (Map)

操作示例

// 创建HashMapMap<String,Integer>ages=newHashMap<>();// 添加键值对ages.put("Tom",25);ages.put("Jerry",30);ages.put("Spike",35);// 移除键值对ages.remove("Jerry");// 遍历键for(Stringname:ages.keySet()){System.out.println(name+": "+ages.get(name));}// 遍历键值对for(Map.Entry<String,Integer>entry:ages.entrySet()){System.out.println(entry.getKey()+": "+entry.getValue());}

应用场景

缓存用户ID与用户名的对应关系,实现O(1)时间复杂度的查询。

5. 队列 (Queue)

操作示例

// 创建队列Queue<String>queue=newLinkedList<>();// 添加元素(入队)queue.offer("Task1");queue.offer("Task2");queue.add("Task3");// 另一种添加方式// 移除元素(出队)Stringtask=queue.poll();// 返回并移除头部元素Stringhead=queue.peek();// 仅查看头部元素不移除// 遍历while(!queue.isEmpty()){System.out.println(queue.poll());}

应用场景

打印任务调度系统,按照任务提交顺序依次处理打印请求。

6. 栈 (Stack)

操作示例

// 使用Deque实现栈(推荐方式)Deque<Integer>stack=newArrayDeque<>();// 入栈stack.push(10);stack.push(20);stack.push(30);// 出栈Integertop=stack.pop();// 返回并移除栈顶元素Integerpeek=stack.peek();// 仅查看栈顶元素不移除// 遍历while(!stack.isEmpty()){System.out.println(stack.pop());}

应用场景

浏览器历史记录管理,实现"后退"功能,最近访问的页面最先显示。

性能对比总结

数据结构查找插入删除适用场景
ArrayO(1)O(n)O(n)固定大小,频繁访问
ArrayListO(1)O(1)*O(n)动态数组,尾部操作多
LinkedListO(n)O(1)O(1)频繁插入删除
HashSetO(1)O(1)O(1)快速查找,去重
HashMapO(1)O(1)O(1)键值对映射
QueueO(1)O(1)O(1)FIFO场景
StackO(1)O(1)O(1)LIFO场景

*注:ArrayList尾部插入为O(1),其他位置为O(n)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 21:03:18

Velero大规模集群备份架构:并行化处理与智能资源管理深度解析

Velero大规模集群备份架构&#xff1a;并行化处理与智能资源管理深度解析 【免费下载链接】velero Backup and migrate Kubernetes applications and their persistent volumes 项目地址: https://gitcode.com/GitHub_Trending/ve/velero 随着企业级Kubernetes集群规模的…

作者头像 李华
网站建设 2026/4/15 10:32:39

springboot基于vue的电影院在线选座系统的设计与实现 _49i1h9i3

目录已开发项目效果实现截图开发技术系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/4/16 9:07:28

云顶之弈自动化挂机进阶技巧:24小时高效刷经验方案

还在为云顶之弈的经验等级发愁吗&#xff1f;每天花费数小时手动对局却收效甚微&#xff1f;现在&#xff0c;一套完整的自动化解决方案将彻底改变你的游戏体验&#xff0c;让你在睡眠、工作期间也能稳定积累经验值。 【免费下载链接】LOL-Yun-Ding-Zhi-Yi 英雄联盟 云顶之弈 全…

作者头像 李华
网站建设 2026/4/16 10:41:46

springboot基于vue的电影院点评网站设计与开发研究_b4b893yg

目录已开发项目效果实现截图开发技术系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/4/15 12:32:34

老生常谈的问题:Spring Boot中如何一键自定义starter?

Spring Boot starter我们知道Spring Boot大大简化了项目初始搭建以及开发过程&#xff0c;而这些都是通过Spring Boot提供的starter来完成的。品达通用权限系统就是基于Spring Boot进行开发&#xff0c;而且一些基础模块其本质就是starter&#xff0c;所以我们需要对Spring Boo…

作者头像 李华
网站建设 2026/4/16 9:02:21

24、利用 SpamAssassin 打击垃圾邮件(上)

利用 SpamAssassin 打击垃圾邮件(上) 在当今数字化的时代,垃圾邮件已经成为了一个严重的问题,它不仅占用了大量的存储空间,还可能带来安全风险。SpamAssassin 是一款强大的垃圾邮件检测工具,能够帮助我们有效地过滤垃圾邮件。本文将详细介绍 SpamAssassin 的相关知识,包…

作者头像 李华