2010-04-17 27 views

Trả lời

4

Không có bộ sưu tập multimap cài sẵn trong Java. Để giải quyết điều này, bạn có thể ánh xạ tới mỗi khóa một danh sách các giá trị: ví dụ: Map<String, List<String>>. Nếu không, có các thư viện của bên thứ ba có nhiều ảnh được triển khai - here là một trong số các thư viện đó.

7

Bạn có thể xem xét Google Collections. Nó có nhiều triển khai cho MultiMap.

+2

Đặc biệt. lớp TreeMultimap của Google Collections bao gồm một phương thức asMap() trả về một SortedMap. Sau đó, bạn có thể gọi các phương thức như SortedMap.subMap() để truy xuất ánh xạ cho một loạt các khóa. –

+2

Bộ sưu tập của Google hiện là [Guava] (http://code.google.com/p/guava-libraries/) – Muhd

1

Có một hack đơn giản xung quanh việc tạo nhiều bộ sưu tập có thể sắp xếp trong java ... Sử dụng tập dữ liệu TreeMap và để nhập khóa * 10^4 + bộ đếm. Bằng cách này, bạn đang lưu trữ các giá trị khóa trùng lặp trong bản đồ (bằng cách thêm bộ đếm chúng thực sự không trùng lặp, vì vậy bạn có thể lưu trữ trong TreeMap, nhưng bạn không biết sử dụng bốn số cuối của các giá trị số nguyên), tuy nhiên tập dữ liệu của bạn là đang được sắp xếp bằng cách sử dụng các giá trị khóa ban đầu của bạn. Lưu ý rằng tùy thuộc vào độ lớn của tập dữ liệu, bạn có thể muốn điều chỉnh 10^n để đảm bảo rằng số liệu lớn hơn số lượng mục nhập trong dữ liệu của bạn.

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