<1> 中常见的数据结构

Java 是一门面向对象编程语言,在程序开发中经常使用各种数据结构,如数组、链表、栈、队列、树、图等等。这些数据结构可以提高程序的效率和可读性,能够更快地完成相应的任务和处理大量的数据。下面我们将对 Java 中常见的数据结构进行详细介绍,并提供实际的应用场景和使用方法。

1. 数组

数组是 Java 中最基本和常用的数据结构之一,用于存储一系列元素。数组可以声明为一维或多维,类型可以是基本类型或者对象类型。使用数组可以快速访问和存储数据,但是数组的长度是固定的,不支持动态扩容。

实例应用场景:存储学生的分数,统计不同年代人的人数等等。

使用方法:

(1)声明数组:

int[] arr = new int[5]; // 声明整型一维数组,长度为5

(2)访问数组元素:

arr[0] = 1; // 存储第一个元素

int x = arr[0]; // 访问第一个元素

(3)遍历数组:

for(int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

2. 链表

链表是一种动态数据结构,可以在运行时动态地添加或删除元素。链表由一系列节点组成,每个节点包含一个数据项和指向下一个节点的指针。由于链表的长度可以动态扩容和缩小,使用链表可以灵活地存储数据。

实例应用场景:模拟火车车厢,实现歌曲播放器的播放队列等等。

使用方法:

(1)声明链表:

LinkedList list = new LinkedList<>();

(2)添加元素:

list.add(1);

list.add(2);

list.add(3);

(3)删除元素:

list.remove(1);

(4)遍历元素:

for(int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

3. 栈

栈是一种后进先出(LIFO)的数据结构,只能在栈顶操作。使用栈可以快速实现逆序输出、括号匹配等算法和应用。

实例应用场景:浏览器的后退、逆波兰表达式求值等等。

使用方法:

(1)声明栈:

Stack stack = new Stack<>();

(2)入栈:

stack.push(1);

stack.push(2);

stack.push(3);

(3)出栈:

int x = stack.pop();

(4)判断栈是否为空:

boolean isEmpty = stack.isEmpty();

(5)获取栈顶元素:

int top = stack.peek();

4. 队列

队列是一种先进先出(FIFO)的数据结构,可以在队尾添加元素,在队头删除元素。使用队列可以快速实现广度优先搜索、任务调度等算法和应用。

实例应用场景:模拟队伍排队、消息队列等等。

使用方法:

(1)声明队列:

Queue queue = new LinkedList<>();

(2)入队:

queue.offer(1);

queue.offer(2);

queue.offer(3);

(3)出队:

int x = queue.poll();

(4)获取队头元素:

int front = queue.peek();

(5)获取队列长度:

int size = queue.size();

5. 树

树是一种分层数据结构,由一系列节点组成,每个节点包含一个父节点、若干个子节点。使用树可以快速实现搜索、排序、存储等算法和应用。

实例应用场景:文件系统的目录结构、网站的网页导航等等。

使用方法:

(1)声明树:

TreeNode root = new TreeNode(1); // 声明根节点

(2)添加子节点:

TreeNode left = new TreeNode(2); // 声明左子节点

TreeNode right = new TreeNode(3); // 声明右子节点

root.left = left; // 添加左子节点

root.right = right; // 添加右子节点

(3)遍历树:

前序遍历:

public void preOrder(TreeNode root) {

if(root == null) return;

System.out.println(root.val);

preOrder(root.left);

preOrder(root.right);

}

中序遍历:

public void inOrder(TreeNode root) {

if(root == null) return;

inOrder(root.left);

System.out.println(root.val);

inOrder(root.right);

}

后序遍历:

public void postOrder(TreeNode root) {

if(root == null) return;

postOrder(root.left);

postOrder(root.right);

System.out.println(root.val);

}

6. 图

图是由节点和边组成的数据结构,可以表示现实世界中的各种关系。使用图可以快速实现路线规划、社交网络分析等算法和应用。

实例应用场景:地图上的城市,社交网站上的用户等等。

使用方法:

(1)声明图:

Graph graph = new Graph(5); // 声明5个节点的图

(2)添加边:

graph.addEdge(0, 1);

graph.addEdge(1, 2);

graph.addEdge(2, 3);

graph.addEdge(3, 4);

(3)搜索图:

广度优先搜索:

public void bfs(int start) {

boolean[] visited = new boolean[n]; // n 是节点数

Queue queue = new LinkedList<>();

visited[start] = true; // 标记起点为已访问

queue.offer(start); // 将起点入队

while(!queue.isEmpty()) {

int cur = queue.poll(); // 取出队头节点

System.out.println(cur); // 输出节点

for(int next : graph.getAdj(cur)) { // 遍历相邻节点

if(!visited[next]) { // 如果尚未访问

visited[next] = true; // 标记为已访问

queue.offer(next); // 入队

}

}

}

}

深度优先搜索:

public void dfs(int cur, boolean[] visited) {

visited[cur] = true; // 标记当前节点为已访问

System.out.println(cur); // 输出节点

for(int next : graph.getAdj(cur)) { // 遍历相邻节点

if(!visited[next]) { // 如果尚未访问

dfs(next, visited); // 递归访问子节点

}

}

}

7. 哈希表

哈希表是一种根据关键字快速定位数据的数据结构,适合处理大量的数据。哈希表的核心是哈希函数,可以将一些复杂的数据结构映射为简单的数字索引。

实例应用场景:存储大量的用户名和密码、高速缓存系统等等。

使用方法:

(1)声明哈希表:

Map map = new HashMap<>();

(2)添加键值对:

map.put("apple", 1);

map.put("banana", 2);

map.put("orange", 3);

(3)获取键对应的值:

int x = map.get("apple");

(4)判断键是否存在:

boolean containsKey = map.containsKey("apple");

(5)遍历键值对:

for(Map.Entry entry : map.entrySet()) {

String key = entry.getKey();

int value = entry.getValue();

System.out.println(key + " -> " + value);

}

以上就是 Java 中常见的数据结构的详细介绍和使用方法,希望能够对大家有所帮助。在实际应用中,我们需要结合具体场景选择合适的数据结构,以提高程序的效率和可读性。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(110) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部