数据结构入门(1)
2025/10/16大约 2 分钟
前言
学习 labuladong 算法笔记的“入门:编程语言基础及练习”。
Java 数据结构
动态数组
ArrayList 是 Java 标准库中的动态数组实现。相比于固定大小的数组,ArrayList 可以根据需要动态调整大小。
import java.util.ArrayList;
import java.util.Collections;
// 初始化
// ArrayList<Integer> nums = new ArrayList<>();
// ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(1, 3, 5));
ArrayList<Integer> nums = new ArrayList<>(Collections.nCopies(n, 0));
// 判空
nums.isEmpty();
// 长度
nums.size();
// 根据索引 idx,增删改查
nums.add(idx, num);
nums.remove(idx);
nums.set(idx, num);
nums.get(idx);
// 数组尾部添加元素
nums.add(num);
// 根据元素值查找索引
nums.indexOf(num)
// 交换 idx1 和 idx2 位置的元素
Collections.swap(nums, idx1, idx2);
// 遍历数组
for (int num : nums) {
System.out.print(num + " ");
}双链表
LinkedList 是 Java 标准库中的双向链表实现。相比于 ArrayList,LinkedList 在头部和尾部插入和删除元素时性能更好。
import java.util.Arrays;
import java.util.LinkedList;
// 初始化
LinkedList<Integer> lst = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));
// 判空 isEmpty() 长度 size()
// 头部、尾部插入元素
lst.addFirst(num);
lst.addLast(num);
// 删除头部、尾部元素
lst.removeFirst();
lst.removeLast();
// 查看头部、尾部元素
lst.getFirst();
lst.getLast();
// 根据 idx 插入元素
lst.add(idx, num);
// 遍历双链表
for (int val : lst) {
System.out.print(val + " ");
}队列
Queue 是 Java 标准库中的队列接口,常用的实现类有 LinkedList 和 PriorityQueue。
import java.util.Queue;
import java.util.LinkedList;
// 初始化
Queue<Integer> q = new LinkedList<>();
// 判空 isEmpty() 长度 size()
// 入队
q.offer(num);
// 出队
q.poll();
// 查看队头元素
q.peek();栈
Java 提供了 Stack 类来实现栈的功能。
import java.util.Stack;
// 初始化
Stack<Integer> s = new Stack<>();
// 判空 isEmpty() 长度 size()
// 入栈
s.push(num);
// 出栈
s.pop();
// 查看栈顶元素
s.peek();哈希表
HashMap 是 Java 标准库中的哈希表实现,提供了基于键值对(key-value)的存储,可以高效的完成键值对的增删查改操作。
import java.util.HashMap;
import java.util.Map;
// 初始化哈希表
HashMap<Integer, String> hashmap = new HashMap<>();
// 判空 isEmpty() 长度 size()
// 插入键值对
hashmap.put(1, "one");
// 删除键值対
hash.remove(1);
// 获取指定键对应的值,若不存在会返回 null
hashmap.get(2);
// 获取指定键对应的值,若不存在则返回默认值
hashmap.getOrDefault(2, "defaultVal")
// 判断指定键是否存在
hashmap.containsKey(1);
// 遍历哈希表
for (Map.Entry<Integer, String> pair : hashmap.entrySet() {
System.out.println(pair.getKey() + " -> " + pair.getValue());
}哈希集合
HashSet 是 Java 标准库中的哈希集合实现,用于存储不重复的元素,常见使用场景是对元素进行去重。
import java.util.Arrays;
import java.util.HashSet;
// 初始化哈希集合
HashSet<Integer> hashset = new HashSet<>(Arrays.asList(1, 2, 3, 4));
// 判空 isEmpty() 大小 size()
// 插入元素
hashset.add(5);
// 删除元素
hashset.remove(5);
// 判断指定元素是否存在
hashset.contains(1);
// 遍历哈希集合
for (int element : hashset) {
System.out.println(element);
}