2012-04-16 84 views
11

Tôi muốn tạo một chương trình tạo biểu đồ (cụ thể là biểu đồ chương trình), lưu trữ các giá trị tại các nút và cũng lưu các nút khác mà mỗi nút được kết nối với nhau.Tạo biểu đồ trong java

Tôi đang nghĩ đến việc này bằng danh sách được liên kết. Đây có phải là cách đi đúng đắn không? Bất kỳ lời khuyên nào khác sẽ được đánh giá cao.

Trả lời

21

Phần lớn bạn nên lập mô hình biểu đồ của mình bằng danh sách kề. Có thể có các khung công tác hiện có để làm điều này, nhưng nếu bạn quan tâm đến việc biểu diễn như một bài tập, bạn thường muốn hai thứ. Đầu tiên, một HashMap chứa tất cả các nút của bạn, nhãn nút cho nút của bạn có thể là khóa, chính nút đó là giá trị.

Tài liệu API Java HashMaps here.

Trong mỗi đối tượng nút, bạn sẽ muốn danh sách các nút nằm cạnh nút đó. Điều này được thực hiện tốt nhất với một ArrayList, được ghi lại là here.

Đây là cách nó có thể được sắp xếp.

import java.util.Hashmap; 
import java.util.ArrayList; 

class Node { 
    String label; 
    ArrayList<Node> adjacencyList; 
} 

HashMap<String, Node> graph = new HashMap<String, Node>(); 

Hầu hết các thuật toán bạn muốn chạy trên biểu đồ sẽ chạy tốt trên biểu diễn này.

+0

Tôi sẽ thử điều này, cảm ơn bạn rất nhiều. – user1079226

0

Bạn có thể viết đối tượng đồ thị của riêng mình hoặc sử dụng một cái gì đó như Jung.

1

Điều bạn đang tìm kiếm có vẻ là API cây xanh. Trên thực tế có một cái tốt đẹp bên trong gói swing mà đã có mặt trong Java SE thực hiện mặc định là: javax.swing.tree.DefaultMutableTreeNode. Nó có thể được sử dụng bên ngoài ứng dụng Swing và cung cấp một mô hình TreeNode rất chuẩn.

Bạn sẽ tìm thấy tất cả mọi thứ để phù hợp với nhu cầu của bạn: getChildren(), getParent(), setUserObject() ... vv và mọi phương pháp đệ quy cho bò và tìm kiếm trên cây nút.

Tin vui là bạn sẽ kiếm được khả năng viết giao diện người dùng JTree sau vài phút!

Các vấn đề liên quan