Tôi đã thực hiện việc này trước đây. Đó là một bản đồ đa lệnh được đặt hàng và nó chỉ là một TreeMap của các đối tượng List. Như thế này ..
Map<KeyType, List<ValueType>> mmap = new TreeMap<KeyType, List<ValueType>>();
Bạn cần tạo một LinkedList mới mỗi khi một khóa mới được giới thiệu, vì vậy có thể hữu ích khi quấn nó trong một lớp chứa tùy chỉnh. Tôi sẽ cố tìm thứ gì đó.
Vì vậy, tôi đã ném thùng chứa tùy chỉnh này lại với nhau một cách nhanh chóng (hoàn toàn chưa được kiểm tra), nhưng đó có thể là những gì bạn đang tìm kiếm. Hãy nhớ rằng bạn chỉ nên sử dụng loại vùng chứa này nếu bạn thực sự đang tìm kiếm bản đồ danh sách giá trị được sắp xếp. Nếu có một số thứ tự tự nhiên cho giá trị của bạn, bạn nên sử dụng TreeSet như những người khác đã đề xuất.
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class MTreeMap<K, V> {
private final Map<K, List<V>> mmap = new TreeMap<K, List<V>>();
private int size = 0;
public MTreeMap() {
}
public void clear() {
mmap.clear();
size=0;
}
public boolean containsKey(K key) {
return mmap.containsKey(key);
}
public List<V> get(K key) {
return mmap.get(key);
}
public boolean isEmpty() {
return mmap.isEmpty();
}
public Set<K> keySet() {
return mmap.keySet();
}
public Collection<List<V>> valueLists() {
return mmap.values();
}
public void put(K key, V value) {
List<V> vlist = mmap.get(key);
if (null==vlist) {
vlist = new LinkedList<V>();
mmap.put(key, vlist);
}
vlist.add(value);
++size;
}
public List<V> remove(Object key) {
List<V> vlist = mmap.remove(key);
if (null!=vlist) {
size = size - vlist.size() ;
}
return vlist;
}
public int size() {
return size;
}
public String toString() {
return mmap.toString();
}
}
Dưới đây là một thử nghiệm thô sơ:
public class TestAnything {
public static void main(String[] args) {
MTreeMap<Integer, String> mmap = new MTreeMap<Integer, String>();
mmap.put(1, "Value1");
mmap.put(2, "Value2");
mmap.put(3, "Value3");
mmap.put(1, "Value4");
mmap.put(3, "Value5");
mmap.put(2, "Value6");
mmap.put(2, "Value7");
System.out.println("size (1) = " + mmap.get(1).size());
System.out.println("size (2) = " + mmap.get(2).size());
System.out.println("size (3) = " + mmap.get(3).size());
System.out.println("Total size = " + mmap.size());
System.out.println(mmap);
}
}
Kết quả là thế này:
size (1) = 2
size (2) = 3
size (3) = 2
Total size = 7
{1=[Value1, Value4], 2=[Value2, Value6, Value7], 3=[Value3, Value5]}
Nếu hai yếu tố có cùng Y phối hợp, những gì bạn ** bạn ** đặt Đầu tiên? Có tiêu chí nào khác không? – OscarRyz