news 2026/6/25 19:45:52

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/6/24 6:09:31

微博超话自动签到神器:告别繁琐签到,享受智能追星新体验

微博超话自动签到神器&#xff1a;告别繁琐签到&#xff0c;享受智能追星新体验 【免费下载链接】weibo_supertopic_sign 基于Python/Nodejs的微博超话签到脚本&#xff0c;支持云函数运行或青龙面板运行 项目地址: https://gitcode.com/gh_mirrors/we/weibo_supertopic_sign…

作者头像 李华
网站建设 2026/6/23 10:53:22

25、系统日志管理与大文件处理全攻略

系统日志管理与大文件处理全攻略 1. 系统日志概述 在系统运行过程中,即使是使用频率较低的系统,在启动和关闭期间也会生成数千行日志文件,而繁忙的应用程序每天轻松就能产生数百万行日志。日志文件往往冗长且枯燥,因此我们通常会借助软件智能过滤出紧急条目,如即将发生故…

作者头像 李华
网站建设 2026/6/24 3:28:30

26、系统监控:日志文件处理与入侵检测

系统监控:日志文件处理与入侵检测 1. 日志文件搜索与分析 在系统管理中,日志文件是发现问题和监控系统状态的重要资源。如果你想确保搜索日志时有结果,可以使用 logger 程序手动生成日志条目,例如: logger "Authentication failure"也可以通过登录用户账户…

作者头像 李华
网站建设 2026/6/24 21:27:42

OpenWrt界面美化终极方案:从技术管理到视觉享受的完美升级

OpenWrt界面美化终极方案&#xff1a;从技术管理到视觉享受的完美升级 【免费下载链接】luci-theme-argon Argon is a clean and tidy OpenWrt LuCI theme that allows users to customize their login interface with images or videos. It also supports automatic and manua…

作者头像 李华
网站建设 2026/6/24 8:43:50

5 分钟搞懂 Kafka 核心概念:Topic、Partition、Broker 到底是什么?

提到 Kafka&#xff0c;很多人第一反应是“消息队列”“高吞吐”&#xff0c;但上手时总会被 Topic、Partition、Broker 这三个核心概念绕晕——它们到底是做什么的&#xff1f;相互之间是什么关系&#xff1f;今天咱们用 5 分钟&#xff0c;结合生活场景把这些概念彻底讲透。 …

作者头像 李华
网站建设 2026/6/24 21:47:10

Ultimate Vocal Remover GUI完整部署指南:三分钟快速上手音频分离神器

Ultimate Vocal Remover GUI完整部署指南&#xff1a;三分钟快速上手音频分离神器 【免费下载链接】ultimatevocalremovergui 使用深度神经网络的声音消除器的图形用户界面。 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui 还在为无法提取…

作者头像 李华