Google collecions ライブラリの TreeMultimap は、使うことが多そう。
com.google.common.collect.TreeMultimap<K,V>
public static <K,V> TreeMultimap<K,V> create(Comparator<? super K> keyComparator
,Comparator<? super V> valueComparator)
サンプルは、こんな風、、、
TreeMultimap<String,Foo> m = TreeMultimap. create(
new Comparator<String>(){
@Override
public int compare(String s1,String s2){
return s1.compareTo(s2);
}
}
,new Comparator<Foo>(){
@Override
public int compare(Foo f1,Foo f2){
//return f1.seq.compareTo(f2.seq) >= 0 ? -1 : 1; // 降順
return f1.seq.compareTo(f2.seq) >= 0 ? 1 : -1; // 昇順
}
}
);
m.put("a",new Foo(10,"AAA"));
m.put("a",new Foo(14,"BBB"));
for(String key : m.keySet()){
for(Foo foo : m.get(key)){
System.out.println("seq="+foo.seq+" val="+foo.val);
}
}
----------------
class Foo{
public Integer seq;
public String val;
public Foo(Integer seq,String v){
this.seq = seq;
this.val = v;
}
}
----------------
TreeMultimap#size() →総数
TreeMultimap#asMap().size() →Keyの数