Java 中数据结构的实用源码236


数据结构在计算机科学中扮演着至关重要的角色,提供了一种组织和存储数据的方式,使其易于访问和处理。Java 提供了丰富的内置数据结构,以及第三方库中可用的广泛选择。

本文将提供一些实用且常用的 Java 数据结构源码,涵盖链表、栈、队列、树和哈希表。这些源码不仅有助于理解数据结构的概念,还可用于实际开发场景中。## 链表
```java
public class Node {
private T data;
private Node next;
public Node(T data) {
= data;
= null;
}
// 省略 getter 和 setter 方法
}
public class LinkedList {
private Node head;
private Node tail;
private int size;
// 省略 add、remove、get 等操作方法
}
```
## 栈
```java
public class Stack {
private Node top;
private int size;
public void push(T data) {
Node newNode = new Node(data);
(top);
top = newNode;
size++;
}
public T pop() {
if (isEmpty()) {
throw new EmptyStackException();
}
T data = ();
top = ();
size--;
return data;
}
// 省略其他方法
}
```
## 队列
```java
public class Queue {
private Node front;
private Node rear;
private int size;
public void enqueue(T data) {
Node newNode = new Node(data);
if (isEmpty()) {
front = rear = newNode;
} else {
(newNode);
rear = newNode;
}
size++;
}
public T dequeue() {
if (isEmpty()) {
throw new EmptyQueueException();
}
T data = ();
front = ();
if (front == null) {
rear = null;
}
size--;
return data;
}
// 省略其他方法
}
```
## 树


二叉树
```java
public class BinaryTree {
private Node root;
public void add(T data) {
root = addRecursive(root, data);
}
private Node addRecursive(Node current, T data) {
if (current == null) {
return new Node(data);
}
if (data < ()) {
(addRecursive((), data));
} else {
(addRecursive((), data));
}
return current;
}
// 省略其他方法
}
```


二叉搜索树
```java
public class BinarySearchTree extends BinaryTree {
@Override
public void add(T data) {
(data);
root = balance(root);
}
// 省略查找、删除等操作方法
}
```
## 哈希表
```java
public class HashMap {
private static final int DEFAULT_CAPACITY = 16;
private Entry[] buckets;
private int size;
public HashMap() {
this(DEFAULT_CAPACITY);
}
public HashMap(int capacity) {
= new Entry[capacity];
= 0;
}
public void put(K key, V value) {
int index = hash(key);
Entry current = buckets[index];
while (current != null) {
if (().equals(key)) {
(value);
return;
}
current = ();
}
buckets[index] = new Entry(key, value, buckets[index]);
size++;
}
// 省略其他方法
}
```
这些源码只是最基本的实现示例,在实际应用中,需要根据具体需求进行修改和扩展。通过理解这些基础数据结构的实现原理,开发者可以从容应对各种数据管理场景,提高代码效率和可维护性。

2024-11-17


上一篇:Java 方法头:语法、类型和最佳实践

下一篇:Java 向文件中写入数据