2010-06-05 29 views
7

Tôi hiện đang tìm hiểu API thu thập Java và cảm thấy tôi hiểu rõ các khái niệm cơ bản, nhưng tôi chưa bao giờ hiểu tại sao API chuẩn này không bao gồm triển khai Biểu đồ. Ba lớp cơ sở có thể dễ hiểu (Danh sách, Bộ và Bản đồ) và tất cả các triển khai của chúng trong API hầu như đơn giản và nhất quán.Tại sao API Bộ sưu tập Java không bao gồm triển khai Biểu đồ?

Xem xét tần suất biểu đồ xuất hiện như một cách tiềm năng để mô hình hóa một vấn đề nhất định, điều này không có ý nghĩa với tôi (có thể nó tồn tại trong API và tôi không tìm đúng nơi khóa học). Steve Yegge đề xuất trong một bài đăng trên blog của mình rằng một lập trình viên nên xem xét đồ thị trước khi tấn công một vấn đề và nếu miền vấn đề không phù hợp với cấu trúc dữ liệu này, thì chỉ xem xét các cấu trúc thay thế.

Dự đoán đầu tiên của tôi là không có cách phổ biến để biểu thị đồ thị hoặc giao diện của chúng có thể không đủ chung để triển khai API hữu ích? Nhưng nếu bạn phân tách một đồ thị thành các thành phần cơ bản của nó (đỉnh và một tập hợp các cạnh nối một số hoặc tất cả các đỉnh) và xem xét các cách đồ thị thường được xây dựng (các phương thức như addVertex (v) và insertEdge (v1, v2)) có vẻ như việc triển khai Biểu đồ chung sẽ có thể và hữu ích.

Cảm ơn bạn đã giúp tôi hiểu điều này tốt hơn.

+1

API Java đầy lỗ. Không cần phải là lý do cho họ. – skaffman

+1

API Java SE chỉ cung cấp API * cơ bản * để xây dựng thêm. Đó là lý do tại sao có nhiều API "bên thứ ba" cụ thể/thuận tiện hơn mà bạn có thể sử dụng ở trên cùng của API Java SE. – BalusC

Trả lời

12

Lưu ý rằng một số biểu đồ đặc biệt được bao gồm trong Khung thu thập, đặc biệt là danh sách và cây được liên kết. Điều này cũng chỉ ra một lý do có thể giải thích tại sao không có đồ thị chung nào được thực hiện: vì đồ thị có thể có nhiều hình thức và hương vị khác nhau với các đặc điểm khác nhau, một biểu đồ chung có thể không trở nên rất hữu ích.

Ngoài ra, ít nhất là trong thực tế của tôi cho đến nay, tôi không cảm thấy cần đồ thị phần lớn thời gian. Một số lĩnh vực chắc chắn cần chúng, nhưng nhiều người chỉ đơn giản là không. (Trong số hơn một chục dự án thuộc nhiều lĩnh vực khác nhau mà tôi đã tham gia, tôi kể lại hai biểu đồ thực sự cần thiết.) Vì vậy, tôi đoán không có áp lực thực sự lớn từ cộng đồng Java nói chung để có Biểu đồ trong Bộ sưu tập Khung. Nó chỉ chứa những thứ cơ bản, cần thiết "hầu như luôn luôn", bởi "hầu hết mọi người". Và một trong những thế mạnh của nó thực sự là sự đơn giản (tương đối) của nó và sự rõ ràng, mà tôi tin rằng, các nhà thiết kế của nó xem như một tài sản được bảo tồn.

+1

+1. Đồ thị cung cấp một cách để lý luận chung trên nhiều thuật toán cụ thể, cấu trúc dữ liệu, vv Khi nói đến cụ thể để viết mã, bạn hiếm khi thực sự muốn một lớp "Graph" như vậy mà là một đồ thị với các thuộc tính rất cụ thể. –

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