当前位置: 首页 > news >正文

Java常用数据结构入门

Java常用数据结构入门

前言

数据结构是程序设计中的基础,掌握常用数据结构能帮助你更高效地解决问题。本文面向Java初学者,介绍Java中常用的数据结构及其基本使用方法。


1. 数组 (Array)

数组是最基础的数据结构,可以存储固定大小的同类型元素。

定义与使用:

int[] arr = new int[5]; // 创建长度为5的整型数组
arr[0] = 10; // 赋值
System.out.println(arr[0]); // 输出第一个元素

特点:

  • 长度固定,不能动态扩容
  • 访问速度快,适合存储和遍历

2. ArrayList

ArrayList是Java集合框架中最常用的动态数组实现,可以动态扩容,适合存储不固定长度的数据。

定义与使用:

import java.util.ArrayList;
ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(0)); // 输出 "Java"

常用方法:

  • add() 添加元素
  • get() 获取元素
  • remove() 移除元素
  • size() 获取长度

3. LinkedList

LinkedList是链表结构,插入和删除操作效率高,适合频繁增删元素的场景。

定义与使用:

import java.util.LinkedList;
LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(1);
linkedList.add(2);
linkedList.remove(0); // 移除第一个元素

特点:

  • 插入/删除快
  • 随机访问慢

4. HashMap

HashMap是常用的键值对映射结构,用于存储映射关系。

定义与使用:

import java.util.HashMap;
HashMap<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
System.out.println(map.get("Java")); // 输出 1

常用方法:

  • put() 添加键值对
  • get() 获取值
  • remove() 移除键值对
  • containsKey() 判断是否包含某个键

5. HashSet

HashSet用于存储不重复的元素集合。

定义与使用:

import java.util.HashSet;
HashSet<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 不会重复添加
System.out.println(set.size()); // 输出 2

特点:

  • 元素不重复
  • 无序存储

6. 栈 (Stack)

是一种后进先出(LIFO)的数据结构,可以用Stack类或Deque接口实现。

定义与使用:

import java.util.Stack;
Stack<Integer> stack = new Stack<>();
stack.push(1); // 压栈
stack.push(2);
System.out.println(stack.pop()); // 出栈,输出2

7. 队列 (Queue)

队列是一种先进先出(FIFO)结构,常用LinkedListArrayDeque实现。

定义与使用:

import java.util.LinkedList;
import java.util.Queue;
Queue<String> queue = new LinkedList<>();
queue.offer("Java");
queue.offer("Python");
System.out.println(queue.poll()); // 输出并移除 "Java"

总结

Java集合框架为我们提供了丰富的数据结构选择。作为初学者,建议重点掌握上述几种数据结构的基本用法和特点。多加练习,结合实际场景选择合适的数据结构,会让你的编程能力大幅提升。

推荐学习路径:

  1. 了解每种数据结构的特点和适用场景
  2. 编写代码练习基本操作
  3. 阅读Java官方文档和相关书籍

参考资料:

  • Java官方文档 - Collections Framework
  • 《数据结构与算法Java版》
http://www.lryc.cn/news/609970.html

相关文章:

  • 推荐广告搜索三种业务的区别
  • 车载通信架构 ---车内通信的汽车网络安全
  • 人工智能之数学基础:条件概率及其应用
  • 跟着顶刊学写论文-摘要1
  • 深入浅出 RabbitMQ:工作队列实战(轮训策略VS公平策略)
  • SpringCloud之Nacos基础认识-服务注册中心
  • 13.Home-面板组件封装
  • Mac桌面仿制项目--让ai一句话生成的
  • mac 技巧
  • 【AI 加持下的 Python 编程实战 2_13】第九章:繁琐任务的自动化(中)——自动批量合并 PDF 文档
  • 大模型×垂直领域:预算、时间、空间三重夹击下的生存法则
  • 2.2 vue2子组件注册使用
  • 西门子PLC S7-1200单轴步进控制电动机
  • Axure设计Web端新增表单页面模板案例
  • 【LeetCode 热题 100】215. 数组中的第K个最大元素——(解法一)快速选择
  • 安卓逆向(基础①-Google Pixel-Root)
  • Visual Studio 2022安装与快捷键全攻略
  • 模型蒸馏(Distillation):原理、算法、应用
  • 【达梦MPP(带主备)集群搭建】
  • Selenium教程(Python 网页自动化测试脚本)
  • 华为2288H V5服务器闪红灯 无法开机案例
  • C++八股文——设计模式
  • JSON Schema
  • mybatis-plus报错Caused by: java.sql.SQLException: 无效的列类型: 1111
  • 使用 Aspose.OCR 将图像文本转换为可编辑文本
  • 微软WSUS替代方案
  • Druid手写核心实现案例 实现一个简单Select 解析,包含Lexer、Parser、AstNode
  • AJAX表单验证项目实战:实时用户名检查
  • curl发送文件bodyParser无法获取请求体的问题分析
  • Stanford CS336 assignment1 | Byte-Pair Encoding (BPE) Tokenizer