DefaultMutableTreeNode
trong gói javax.swing.tree
cung cấp một loạt các tính năng để thao tác với cây dữ liệu có thể thay đổi. Dưới đây là một số tính năng chính của lớp DefaultMutableTreeNode
:
- Quản lý cấu trúc cây:
- Thêm nút con:
add(DefaultMutableTreeNode child)
- Xóa nút con:
remove(DefaultMutableTreeNode child)
- Xóa tất cả nút con:
removeAllChildren()
- Lấy số lượng nút con:
getChildCount()
- Lấy nút con tại vị trí cụ thể:
getChildAt(int index)
- Lấy vị trí của một nút con:
getIndex(TreeNode node)
- Kiểm tra xem một nút có phải là nút lá hay không:
isLeaf()
- Thêm nút con:
- Truy xuất và sửa đổi nội dung nút:
- Lấy đối tượng người dùng của nút:
getUserObject()
- Đặt đối tượng người dùng của nút:
setUserObject(Object userObject)
- Lấy đối tượng người dùng của nút:
- Quản lý nút cha:
- Lấy nút cha:
getParent()
- Đặt nút cha:
setParent(MutableTreeNode newParent)
- Lấy nút cha:
- Kiểm tra và truy xuất các mối quan hệ giữa các nút:
- Kiểm tra xem một nút có phải là nút cha của nút hiện tại hay không:
isNodeChild(TreeNode aNode)
- Kiểm tra xem một nút có phải là nút cha của nút khác hay không:
isNodeDescendant(TreeNode anotherNode)
- Lấy đường dẫn từ gốc đến nút hiện tại:
getPath()
- Lấy đường dẫn từ nút gốc đến một nút khác:
getPathToRoot(TreeNode aNode)
- Kiểm tra xem một nút có phải là nút cha của nút hiện tại hay không:
- Traversing (Duyệt) cây:
- Duyệt qua các nút con sử dụng vòng lặp:
children()
- Duyệt qua các nút con sử dụng vòng lặp duyệt sâu:
depthFirstEnumeration()
- Duyệt qua các nút con sử dụng vòng lặp duyệt rộng:
breadthFirstEnumeration()
- Duyệt qua các nút con sử dụng vòng lặp:
- Phương pháp toán tử so sánh:
- So sánh nút hiện tại với một nút khác:
compareTo(Object o)
- So sánh nút hiện tại với một nút khác:
Đây chỉ là một số tính năng chính của lớp DefaultMutableTreeNode
. Có thể tổ chức, truy xuất và thay đổi cây dữ liệu một cách linh hoạt và hiệu quả bằng cách sử dụng các phương thức được cung cấp bởi lớp này.
Dưới đây là một ví dụ minh họa về cách sử dụng DefaultMutableTreeNode
để tạo và thao tác với một cây dữ liệu:
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
public class TreeExample {
public static void main(String[] args) {
// Tạo nút gốc
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
// Tạo và thêm nút con
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Node 1");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Node 2");
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("Node 3");
root.add(node1);
root.add(node2);
root.add(node3);
// Thêm nút con cho node1
DefaultMutableTreeNode node11 = new DefaultMutableTreeNode("Node 1.1");
DefaultMutableTreeNode node12 = new DefaultMutableTreeNode("Node 1.2");
node1.add(node11);
node1.add(node12);
// Thêm nút con cho node2
DefaultMutableTreeNode node21 = new DefaultMutableTreeNode("Node 2.1");
DefaultMutableTreeNode node22 = new DefaultMutableTreeNode("Node 2.2");
node2.add(node21);
node2.add(node22);
// Truy cập và in ra cây dữ liệu
printTree(root);
// Kiểm tra một nút có phải là nút lá hay không
System.out.println("Is node11 a leaf? " + node11.isLeaf()); // false
System.out.println("Is node21 a leaf? " + node21.isLeaf()); // true
// Lấy đường dẫn từ gốc đến nút node12
TreePath path = new TreePath(node12.getPath());
System.out.println("Path to node12: " + path);
// Lấy số lượng nút con của nút gốc
System.out.println("Number of children of root: " + root.getChildCount()); // 3
}
// In ra cây dữ liệu bằng phương pháp duyệt sâu
public static void printTree(DefaultMutableTreeNode node) {
System.out.println(node.getUserObject());
for (int i = 0; i < node.getChildCount(); i++) {
TreeNode child = node.getChildAt(i);
printTree((DefaultMutableTreeNode) child);
}
}
}
Kết quả sẽ là:
Root
Node 1
Node 1.1
Node 1.2
Node 2
Node 2.1
Node 2.2
Node 3
Is node11 a leaf? false
Is node21 a leaf? true
Path to node12: [Root, Node 1, Node 1.2]
Number of children of root: 3
Trong ví dụ này, chúng ta đã tạo một cây dữ liệu đơn giản bằng cách sử dụng DefaultMutableTreeNode
và thực hiện một số thao tác như truy cập vào các nút, kiểm tra tính chất của nút và lấy đường dẫn trong cây dữ liệu.
Để lại một phản hồi
Bạn phải đăng nhập để gửi phản hồi.