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

Java 中常见的数据结构及其常用 API

本文总结了 Java 中常见的数据结构及其常用 API,帮助开发者在写算法时能够快速选择合适的数据结构和操作。通过使用合适的 API,可以有效减少计算复杂度,并提高代码的执行效率。

1. 数组

数组是 Java 中最常用的数据结构之一,Java 提供了很多操作数组的 API。常用的 API 包括排序、查找、复制、填充等。

Arrays 类
Arrays 类提供了许多静态方法来操作数组,常用方法包括:

  • Arrays.sort():排序数组。使用优化过的快速排序,时间复杂度为 O(nlogn)。

    int[] arr = {2, 6, 8, 7, 10};
    Arrays.sort(arr);
    System.out.println(Arrays.toString(arr));  // 输出: [2, 6, 7, 8, 10]
    
  • Arrays.binarySearch():二分查找,要求数组必须是排序好的。

    int index = Arrays.binarySearch(arr, 6);
    System.out.println(index);  // 输出: 1
    
  • Arrays.equals():比较两个数组是否相等。

    boolean result = Arrays.equals(arr1, arr2);
    
  • Arrays.fill():填充数组。

    Arrays.fill(arr, 5);
    
  • Arrays.copyOf():复制数组,并且可以指定新数组的长度。

    int[] newArray = Arrays.copyOf(arr, 10);
    
  • Arrays.asList():将数组转换为 List 集合。

    List<Integer> list = Arrays.asList(arr);
    

2. 链表

Java 中的链表通过 LinkedList 类实现,它是双向链表。LinkedList 支持快速的插入和删除操作,但随机访问较慢。常用的 API 包括:

  • add(E e):在链表末尾添加元素。

  • addFirst(E e):在链表头部添加元素。

  • addLast(E e):在链表末尾添加元素。

  • removeFirst():删除链表头部元素。

  • removeLast():删除链表尾部元素。

LinkedList<String> list = new LinkedList<>();
list.add("A");
list.addFirst("B");
System.out.println(list);  // 输出: [B, A]

3. 哈希表

哈希表用于快速查找元素。Java 提供了 HashSetHashMap 类来实现哈希表。

HashSet
HashSet 是基于哈希表实现的 Set 集合,主要用于快速查找和去重。

  • add(E e):添加元素。

  • remove(Object o):移除元素。

  • contains(Object o):检查是否包含元素。

HashSet<String> set = new HashSet<>();
set.add("A");
set.add("B");
set.contains("A");  // 返回 true

HashMap
HashMap 提供了键值对的存储和检索操作。

  • put(K key, V value):存储键值对。

  • get(K key):根据键获取值。

  • containsKey(K key):检查是否包含指定键。

HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);
map.get("A");  // 输出: 1

4. ArrayList

ArrayList 是 Java 中最常用的动态数组实现,支持根据索引访问元素,适用于插入较少的场景。

  • add(E e):添加元素。

  • get(int index):获取指定位置的元素。

  • remove(int index):删除指定位置的元素。

  • size():获取 ArrayList 的大小。

ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
System.out.println(list.get(0));  // 输出: A

5. 字符串处理

Java 提供了丰富的字符串处理方法。StringBuilder 类专门用于操作字符串,适合频繁修改字符串时使用。

常用 API:

  • length():返回字符串的长度。

  • charAt(int index):返回指定位置的字符。

  • substring(int start, int end):返回指定范围的子字符串。

  • append(String str):拼接字符串。

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString());  // 输出: Hello World

6. 栈

栈通常通过 java.util.Stack 类或 java.util.ArrayDeque 实现。Stack 是线程安全的,而 ArrayDeque 更高效,适合写算法时使用。

Stack API

  • push(E item):将元素压入栈顶。

  • pop():弹出栈顶元素。

  • peek():查看栈顶元素。

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.pop();  // 弹出 2

7. 队列

队列可以通过 LinkedListArrayDeque 实现。常用 API:

LinkedList

  • add(E e):在队列尾部添加元素。

  • remove():移除队列头部元素。

  • peek():查看队列头部元素。

LinkedList<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.remove();  // 移除 1

ArrayDeque

  • offer(E e):在队列尾部添加元素。

  • poll():移除队列头部元素。

  • peek():查看队列头部元素。

ArrayDeque<Integer> queue = new ArrayDeque<>();
queue.offer(1);
queue.offer(2);
queue.poll();  // 移除 1
http://www.xdnf.cn/news/4834.html

相关文章:

  • IBM崛起之路——领先的托管与咨询服务提供商
  • 【C++】C++函数指针详解与实用技巧
  • 15前端项目----用户信息/导航守卫
  • zst-2001 历年真题 数据库
  • [操作系统] 进程间通信:system V 信号量
  • 测试用例管理平台哪些好用?9款主流测试平台对比
  • 利用ollama.com本地部署大模型及Java验证全攻略
  • 画流程超神组合deepseek + UML
  • 力扣:多数元素
  • 计算机网络笔记(十六)——3.3使用广播信道的数据链路层
  • Oracle EBS FORM快捷键与触发器的关系与使用
  • Web 架构之前后端分离
  • Golang中集合相关的库
  • C++ 手写一个内存池
  • ollama学习-使用部署Qwen3大模型
  • 从易发性分析到灾后规划,AI大模型如何颠覆传统地质灾害防治?
  • 电厂参与全球能源效率排名的方法
  • llama.cpp win10系统无法运行,也不报错解决方案
  • NHANES指标推荐:NfL
  • 如何编写软件概要设计文档?
  • 【行业深度解析】什么是马甲包?
  • LinkList 的底层数据结构及优缺点
  • 深入理解操作系统:从基础概念到核心管理
  • 2025年排名前十进销存软件大测评
  • 12. 原生测试框架Unittest的后置处理方法的使用
  • 从零到精通:GoFrame ORM 使用指南 - 特性、实践与经验分享
  • 制作一款打飞机游戏41:敌机拖拽
  • 解析小米大模型MiMo:解锁语言模型推理潜力
  • C++核心概念全解析:从析构函数到运算符重载的深度指南
  • 「Mac畅玩AIGC与多模态25」开发篇21 - 用户画像生成与摘要输出工作流示例