21xrx.com
2024-12-22 20:49:10 Sunday
登录
文章检索 我的文章 写文章
Java基本数据结构详解:数组、链表、栈、队列、树与图
2023-06-19 02:41:23 深夜i     --     --
Java 数据结构 数组 链表 队列

Java作为一门广泛应用于企业级项目的编程语言,具有非常强的数据处理能力。在Java中,数据结构是常常使用的技术,也是学习Java的重要基础知识点之一。本文将详细介绍Java基本的数据结构,包括数组、链表、栈、队列、树、图,以及相应的代码案例。

1. 数组(Array)

数组属于线性结构,是将具有相同数据类型的一组变量分配在一段连续的内存空间中而成的数据结构。Java中的数组可以是基本数据类型,如int、double等,也可以是对象类型,比如String、Object等。在Java中,数组的下标是从0开始的。

代码案例:


public class ArrayDemo {

 public static void main(String[] args) {

  int[] arr = new int[5];

  arr[0] = 1;

  arr[1] = 2;

  arr[2] = 3;

  arr[3] = 4;

  arr[4] = 5;

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

   System.out.println("arr[" + i + "]=" + arr[i]);

  }

 }

}

2. 链表(Linked List)

链表也是线性结构,但是不同于数组,链表的每个元素(节点)不一定是连接在一起的连续空间,而是通过一个指针,指向下一个元素。

代码案例:


class ListNode {

 int val;

 ListNode next;

 ListNode(int x)

  val = x;

 

}

public class LinkedListDemo {

 public static void main(String[] args) {

  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;

  }

 }

}

3. 栈(Stack)

栈是一种“后进先出”的数据结构,常常用于一些数据处理场景,如表达式求值、函数调用等。

代码案例:


import java.util.*;

public class StackDemo {

 public static void main(String[] args) {

  Stack stack = new Stack<>();

  stack.push(1);

  stack.push(2);

  stack.push(3);

  while (!stack.empty()) {

   System.out.println(stack.pop());

  }

 }

}

4. 队列(Queue)

队列是一种“先进先出”的数据结构,常常用于数据缓存、消息传递等场景。

代码案例:


import java.util.*;

public class QueueDemo {

 public static void main(String[] args) {

  Queue queue = new LinkedList<>();

  queue.offer(1);

  queue.offer(2);

  queue.offer(3);

  while (!queue.isEmpty()) {

   System.out.println(queue.poll());

  }

 }

}

5. 树(Tree)

树是一种非线性结构,由节点和边组成。在树中,每个节点都有零个或多个子节点,没有父节点的节点称为根节点,没有子节点的节点称为叶子节点。

代码案例:


class TreeNode {

 int val;

 TreeNode left;

 TreeNode right;

 TreeNode(int x)

  val = x;

 

}

public class BinaryTreeDemo {

 public static void main(String[] args) {

  TreeNode root = new TreeNode(1);

  TreeNode node2 = new TreeNode(2);

  TreeNode node3 = new TreeNode(3);

  root.left = node2;

  root.right = node3;

  TreeNode node4 = new TreeNode(4);

  TreeNode node5 = new TreeNode(5);

  node2.left = node4;

  node2.right = node5;

  TreeNode node6 = new TreeNode(6);

  TreeNode node7 = new TreeNode(7);

  node3.left = node6;

  node3.right = node7;

 }

}

6. 图(Graph)

图也是一种非线性结构,图中的元素称为节点或顶点,节点之间的连接称为边或弧。

代码案例:


import java.util.*;

public class GraphDemo {

 public static void main(String[] args) {

  Map > graph = new HashMap<>();

  graph.put(0, Arrays.asList(1, 2, 3));

  graph.put(1, Arrays.asList(0, 2, 4));

  graph.put(2, Arrays.asList(0, 1, 3));

  graph.put(3, Arrays.asList(0, 2));

  graph.put(4, Arrays.asList(1));

  for (int i = 0; i < 5; i++) {

   System.out.println(i + ": " + graph.get(i));

  }

 }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复