我用TreeMultiset嘗試了下面的代碼。似乎丟棄了「* Twin」條目並且重複的數量存儲在TreeMultiset中。我想這是一個功能,而不是一個錯誤。有沒有一個對象存儲每個對象而不是一個鍵和一個重複計數?TreeMultiset是否只保存每個鍵的重複次數?
public class Guava {
public static class Obj implements Comparable<Obj> {
String name;
int age;
public Obj(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return String.format("%[email protected]%d", name, age);
}
@Override
public int compareTo(Obj o) {
return Integer.compare(age, o.age);
}
}
public static void main(String[] args) {
TreeMultiset<Obj> tree = TreeMultiset.create();
tree.add(new Obj("Ajo", 37));
tree.add(new Obj("AjoTwin", 37));
tree.add(new Obj("Ari", 31));
tree.add(new Obj("AriTwin", 31));
tree.add(new Obj("Fly", 1));
System.out.println(tree.size());
for (Obj obj : tree) {
System.out.println(obj);
}
}
}
如果你想要一個集合保持多個「相等」的元素,你不應該使用'Set'。您可能想考慮使用「equals」的正常實現,並使用「Equivalence」來表示同一年齡段的行爲。 –