news 2026/5/16 8:19:25

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/5/8 11:43:54

如何绘制「数据流图」?4步+5张模板,手把手教你绘制专业图形!

在复杂系统的分析与设计过程中&#xff0c;我们常常迷失于纷繁的功能细节与交错的数据关系之中。数据流图恰恰是这样一种化繁为简的视觉化语言&#xff0c;它剥离了时序与控制逻辑的干扰&#xff0c;专注描绘数据在系统中如何诞生、流转、加工与存储的本质脉络。 无论你是要理…

作者头像 李华
网站建设 2026/5/11 12:57:57

Java中的时间类型介绍及使用场景

Java中的时间类型介绍及使用场景 1. Date 类 介绍 Date 是Java最早的日期时间类&#xff0c;位于 java.util 包中。虽然功能相对简单&#xff0c;但在很多遗留系统中仍在广泛使用。 使用场景 与旧版本Java代码兼容简单的时间戳操作第三方库的时间参数传递 代码示例 import java…

作者头像 李华
网站建设 2026/5/11 11:16:51

Revit族库资源完整使用指南:2万个BIM构件高效管理方案

Revit族库资源完整使用指南&#xff1a;2万个BIM构件高效管理方案 【免费下载链接】BIMRevit族库打包插件2万个免费资源一次性下载 探索BIM设计的无限可能&#xff01;我们为您精心准备了2万个免费Revit族库资源&#xff0c;涵盖建筑、结构、水暖电、装饰、施工、路桥等多个专业…

作者头像 李华
网站建设 2026/5/15 12:05:26

Snipe-IT v8.1.2:企业IT资产管理新体验

Snipe-IT v8.1.2&#xff1a;企业IT资产管理新体验 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 还在为繁琐的IT资产管理而烦恼吗&#xff1f;Snipe-IT v8.1.2版本带来…

作者头像 李华
网站建设 2026/5/9 2:49:17

Kafka 生产者 / 消费者 API 详解:Java 代码示例 + 常见参数配置

在分布式消息队列领域&#xff0c;Kafka 以其高吞吐、高可用、低延迟的特性占据着核心地位。对于 Java 开发者而言&#xff0c;熟练掌握 Kafka 生产者&#xff08;Producer&#xff09;与消费者&#xff08;Consumer&#xff09;API 是实现业务解耦、流量削峰、日志收集等场景的…

作者头像 李华
网站建设 2026/5/14 21:51:32

python3.11版本提示ModuleNotFoundError: No module named ‘_ssl‘

第一步&#xff1a;安装OpenSSL 1.1.1请参考之前的步骤&#xff0c;或者使用以下简化步骤&#xff1a;textcd /usr/src wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar -xzf openssl-1.1.1w.tar.gz cd openssl-1.1.1w ./config --prefix/usr/local/openssl --…

作者头像 李华