Java 数据结构学习笔记

1. 栈(Stack)

栈是一种先入后出(FILO)的数据结构,它只允许在栈顶进行插入和删除操作。Java 中需要使用 java.util.Stack 类来实现栈的功能。

示例代码:

Copy Code
import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack<Integer> stack = new Stack<>(); stack.push(1); stack.push(2); stack.push(3); System.out.println("栈中元素为:" + stack); System.out.println("栈顶元素为:" + stack.peek()); System.out.println("弹出栈顶元素:" + stack.pop()); System.out.println("栈中元素为:" + stack); } }

示例输出:

Copy Code
栈中元素为:[1, 2, 3] 栈顶元素为:3 弹出栈顶元素:3 栈中元素为:[1, 2]

2. 队列(Queue)

队列是一种先入先出(FIFO)的数据结构,它允许在队尾插入元素,在队头删除元素。Java 中需要使用 java.util.Queue 接口来实现队列的功能。

示例代码:

Copy Code
import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<String> queue = new LinkedList<>(); queue.offer("A"); queue.offer("B"); queue.offer("C"); System.out.println("队列中元素为:" + queue); System.out.println("队头元素为:" + queue.peek()); System.out.println("弹出队头元素:" + queue.poll()); System.out.println("队列中元素为:" + queue); } }

示例输出:

Copy Code
队列中元素为:[A, B, C] 队头元素为:A 弹出队头元素:A 队列中元素为:[B, C]

3. 链表(LinkedList)

链表是一种动态数据结构,它可以实现快速插入和删除操作。Java 中需要使用 java.util.LinkedList 类来实现链表的功能。

示例代码:

Copy Code
import java.util.LinkedList; public class LinkedListExample { public static void main(String[] args) { LinkedList<String> linkedList = new LinkedList<>(); linkedList.add("A"); linkedList.add("B"); linkedList.add("C"); System.out.println("链表中元素为:" + linkedList); linkedList.addFirst("D"); linkedList.addLast("E"); System.out.println("在链表头部插入元素后,链表中元素为:" + linkedList); linkedList.removeFirst(); linkedList.removeLast(); System.out.println("删除链表头部和尾部元素后,链表中元素为:" + linkedList); } }

示例输出:

Copy Code
链表中元素为:[A, B, C] 在链表头部插入元素后,链表中元素为:[D, A, B, C, E] 删除链表头部和尾部元素后,链表中元素为:[A, B, C]

4. 树(Tree)

树是一种非线性的数据结构,它由若干个节点组成,节点之间存在父子关系。Java 中需要使用 java.util.TreeMap 和 java.util.TreeSet 来实现树的功能。

示例代码:

Copy Code
import java.util.TreeMap; public class TreeMapExample { public static void main(String[] args) { TreeMap<String, Integer> treeMap = new TreeMap<>(); treeMap.put("A", 1); treeMap.put("B", 2); treeMap.put("C", 3); System.out.println("树中元素为:" + treeMap); System.out.println("树中最小的键为:" + treeMap.firstKey()); System.out.println("树中最大的键为:" + treeMap.lastKey()); System.out.println("移除键为 B 的元素后,树中元素为:" + treeMap.remove("B")); System.out.println("现在树中元素为:" + treeMap); } }

示例输出:

Copy Code
树中元素为:{A=1, B=2, C=3} 树中最小的键为:A 树中最大的键为:C 移除键为 B 的元素后,树中元素为:2 现在树中元素为:{A=1, C=3}

这些简单的源码示例演示了 Java 中一些常见的数据结构的实现方式。在实际开发中,自己实现这些数据结构是非常具有挑战性和学习价值的。