2012-12-22 46 views
5

Tôi cần một lớp Java chung để đại diện cho các cặp không có thứ tự thuộc bất kỳ loại nào. Trong khi đó tôi thấy hai giải pháp:Cặp chưa được sắp xếp trong Java

  • HashSet để lưu trữ các yếu tố cặp
  • một lớp Pair với overriden hashCodeequals (để làm Pair(a, b)Pair(b, a) bình đẳng).

Có hợp lý không? Bạn đề nghị điều gì?

+0

Lý do của bạn để viết một container của paris không có thứ tự của bất kỳ loại' là gì? –

+2

có thể trùng lặp của [Tương đương với cặp C++ bằng Java là gì?] (Http://stackoverflow.com/questions/156275/what-is-the-equivalent-of-the-c-pairl-r-in -java) –

+3

@AndrewLogvinov Bạn có thể xem xét ví dụ các cạnh của biểu đồ không có thứ tự. 'Cạnh (v1, v2)' bằng với 'Cạnh (v2, v1)'. – Michael

Trả lời

3

Ở vị trí của bạn, tôi sẽ triển khai lớp học của riêng mình. Miễn là bạn quan tâm đến các bộ chỉ có hai đối tượng, sử dụng HashMap, HashSet (trong đó, tình cờ, sử dụng HashMap nội bộ) hoặc bất kỳ lớp nào khác được thiết kế cho các bộ tùy ý cardinality là một sự lãng phí tài nguyên và thêm độ phức tạp không cần thiết.

Chỉ cần tạo lớp học của riêng bạn với các triển khai equals()hashCode() thích hợp. Có hoạt động , hoặc thậm chí thực hiện các phần của giao diện Set, cũng có thể có ý nghĩa.

Một lưu ý quan trọng: đảm bảo bạn tài liệu lớp học của bạn rộng rãi - ít nhất là xác định xem equals() thực hiện một bản sắc hoặc một so sánh bình đẳng cho các đối tượng chứa, và ý nghĩa của một tham chiếu null chứa là gì ...

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