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

发布于:2025-05-09 ⋅ 阅读:(10) ⋅ 点赞:(0)

本文总结了 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

网站公告

今日签到

点亮在社区的每一天
去签到