news 2026/1/24 2:44:48

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/1/17 9:05:46

Java 提供了8种基本数据类型及封装类型介绍

Java 基本数据类型及封装类型详解 Java 提供了8种基本数据类型&#xff0c;每种都有对应的封装类型&#xff08;包装类&#xff09;。以下是详细介绍&#xff1a; 1. byte (8位) // 基本类型 byte b1 100; byte b2 -50;// 封装类型 - 支持自动装箱 Byte byteObj1 Byte.value…

作者头像 李华
网站建设 2025/12/12 17:19:28

[Windows] Snipaste - 专业截图与贴图效率工具

获取地址&#xff1a;Snipaste 一款为效率而生的专业工具&#xff0c;将截图与贴图功能完美结合。不止于快速截图&#xff08;支持窗口、区域、延时&#xff09;&#xff0c;其独创的“贴图”功能可将截图变为悬浮在屏幕任意位置的参考窗口&#xff0c;方便对比、转录或临时记…

作者头像 李华
网站建设 2026/1/18 8:12:37

ThinkPad X230黑苹果完美指南:从零开始打造你的macOS工作站

ThinkPad X230黑苹果完美指南&#xff1a;从零开始打造你的macOS工作站 【免费下载链接】X230-Hackintosh READMEs, OpenCore configurations, patches, and notes for the Thinkpad X230 Hackintosh 项目地址: https://gitcode.com/gh_mirrors/x2/X230-Hackintosh Thin…

作者头像 李华
网站建设 2025/12/12 17:19:12

Figma转HTML工具:设计与开发的无缝桥梁技术解析

Figma转HTML工具&#xff1a;设计与开发的无缝桥梁技术解析 【免费下载链接】figma-html Builder.io for Figma: AI generation, export to code, import from web 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html Figma转HTML工具作为现代前端开发流程中的重要…

作者头像 李华
网站建设 2026/1/18 8:07:31

回收系统必备的功能有哪些?

旧衣物回收小程序的主要功能包括&#xff1a; ①用户可以在小程序上进行在线预约回收&#xff0c;平台安排工作人员上门回收旧衣物&#xff0c;节省用户的时间和精力。 ②小程序的覆盖面可以扩大到各个区域&#xff0c;商家可以多个回收站点统一进行上门回收&#xff0c;然后再…

作者头像 李华
网站建设 2026/1/21 4:39:45

29、系统性能问题排查指南

系统性能问题排查指南 在 IT 运维工作中,我们常常会遇到各种系统性能问题,比如服务器变慢、应用程序响应不佳等。这些问题不仅影响用户体验,还可能对业务造成损失。本文将围绕系统的四个核心元素:CPU、内存、存储设备和网络负载管理,详细介绍如何排查和解决系统性能问题。…

作者头像 李华