📅  最后修改于: 2023-12-03 15:16:35.797000             🧑  作者: Mango
本文将会介绍Java中常用的数据结构及其编程示例,包括数组、链表、栈、队列、哈希表、树和图,帮助程序员快速了解并学习。
数组是Java中最基本的数据结构之一,是一组连续的内存空间,每个元素占用相同的存储空间,在内存中地址连续排列。
声明一个整型数组并初始化:
int[] arr = {1, 2, 3, 4, 5};
输出数组中的第一个元素:
System.out.println(arr[0]);
链表是由一组节点组成的集合,每个节点都包含数据和指向下一个节点的指针,节点不必在内存中连续放置。
声明一个单向链表并添加节点:
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
ListNode node1 = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
node1.next = node2;
node2.next = node3;
遍历链表并输出:
ListNode head = node1;
while (head != null) {
System.out.println(head.val);
head = head.next;
}
栈和队列都是一种受限的线性结构,栈只允许在一端进行插入和删除操作,是一种后进先出(LIFO)的数据结构;队列允许在一端进行插入,在另一端进行删除,是一种先进先出(FIFO)的数据结构。
声明一个栈并进行操作:
Stack<Integer> stack = new Stack<>();
stack.push(1); // 入栈
stack.push(2);
stack.push(3);
System.out.println(stack.peek()); // 获取栈顶元素
System.out.println(stack.pop()); // 弹出栈顶元素
System.out.println(stack.pop());
System.out.println(stack.pop());
声明一个队列并进行操作:
Queue<Integer> queue = new LinkedList<>();
queue.offer(1); // 入队
queue.offer(2);
queue.offer(3);
System.out.println(queue.peek()); // 获取队头元素
System.out.println(queue.poll()); // 弹出队头元素
System.out.println(queue.poll());
System.out.println(queue.poll());
哈希表是一种用于存储键值对的数据结构,通过哈希函数将键映射到存储桶中,实现对键值对的快速查找和插入。
声明一个哈希表并进行操作:
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("cherry", 3);
System.out.println(map.get("apple")); // 获取键为"apple"的值
System.out.println(map.containsKey("banana")); // 判断是否包含键"banana"
map.remove("cherry"); // 删除键为"cherry"的元素
树是一种非线性的数据结构,由一组节点和边组成,节点之间存在层次关系。二叉树是树的一种特殊形式,每个节点最多只有两个子节点。
声明一个二叉树并进行操作:
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
TreeNode root = new TreeNode(1);
TreeNode node1 = new TreeNode(2);
TreeNode node2 = new TreeNode(3);
root.left = node1;
root.right = node2;
对二叉树进行先序遍历:
void preOrder(TreeNode root) {
if (root != null) {
System.out.println(root.val);
preOrder(root.left);
preOrder(root.right);
}
}
preOrder(root);
图是一种非线性的数据结构,由一组节点和边组成,节点之间存在连接关系,可以用来表示各种实际问题的关系。
声明一个图并进行操作:
class Graph {
int V;
List<Integer>[] adj;
Graph(int V) {
this.V = V;
adj = new List[V];
for (int i = 0; i < V; i++) {
adj[i] = new ArrayList<>();
}
}
void addEdge(int v, int w) {
adj[v].add(w);
adj[w].add(v);
}
}
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 3);
for (int v = 0; v < g.V; v++) {
System.out.println(v + ": " + g.adj[v]);
}
以上就是Java常用数据结构及其编程示例的介绍,希望能帮助程序员们更好地理解和应用这些重要的数据结构。