📜  Java的静态和动态数据结构以及示例(1)

📅  最后修改于: 2023-12-03 15:16:37.276000             🧑  作者: Mango

Java的静态和动态数据结构以及示例

在计算机科学中,数据结构是组织和存储数据的方式。 在Java编程中,有两种类型的数据结构:静态和动态数据结构。

静态数据结构

静态数据结构是指在编写程序时已经定义好的数据结构,在程序运行时无法更改其大小或结构。 这些数据结构通常是基于数组的。

数组

数组是指一组有序类型相同的元素。 在Java中,可以使用以下代码创建数组:

int[] numbers = {1, 2, 3, 4, 5};

栈是一种后进先出的数据结构。 在Java中可以使用以下代码创建栈:

Stack<String> stack = new Stack<>();
stack.push("first");
stack.push("second");
stack.push("third");
队列

队列是一种先进先出的数据结构。 在Java中,可以使用以下代码创建队列:

Queue<String> queue = new LinkedList<>();
queue.add("first");
queue.add("second");
queue.add("third");
集合

集合是一种存储对象的容器。 Java提供了许多不同类型的集合,例如List,Set和Map。

List<String> list = new ArrayList<>();
list.add("first");
list.add("second");
list.add("third");

Set<String> set = new HashSet<>();
set.add("first");
set.add("second");
set.add("third");

Map<String, String> map = new HashMap<>();
map.put("name", "John");
map.put("age", "25");
动态数据结构

动态数据结构是可以在程序运行时更改其大小和结构的数据结构。 常见的动态数据结构包括链表,树和图。

链表

链表是一种由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。 可以通过添加或删除节点来更改链表的大小。

class Node {
    int data;
    Node next;
}

Node head = new Node();
head.data = 1;

Node second = new Node();
second.data = 2;
head.next = second;

Node third = new Node();
third.data = 3;
second.next = third;

树是一种由节点组成的数据结构,每个节点可以有零个或多个子节点。 可以通过添加或删除节点来更改树的大小。

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
}

TreeNode root = new TreeNode();
root.val = 1;

TreeNode leftChild = new TreeNode();
leftChild.val = 2;
root.left = leftChild;

TreeNode rightChild = new TreeNode();
rightChild.val = 3;
root.right = rightChild;

图是一种由节点和边组成的数据结构,每个节点可以连接到其他节点。 可以通过添加或删除节点和边来更改图的大小和结构。

class GraphNode {
    int val;
    List<GraphNode> neighbors;
}

GraphNode node1 = new GraphNode();
node1.val = 1;

GraphNode node2 = new GraphNode();
node2.val = 2;

GraphNode node3 = new GraphNode();
node3.val = 3;

node1.neighbors = Arrays.asList(node2, node3);
node2.neighbors = Arrays.asList(node1);
node3.neighbors = Arrays.asList(node1);
结论

在Java编程中,静态和动态数据结构提供了不同的方法来组织和存储数据。 了解这些数据结构有助于开发者在设计和实现程序时做出更好的决策。