我用 TreeMultiset 尝试了以下代码。似乎“*Twin”条目被丢弃,重复次数存储在 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("%s@%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);
}
}
}
最佳答案
如果您说两个对象相等,但并不真正相等,这必然会导致困惑。在本例中,我将使用 Obj 列表的列表。
对于您的示例,如果您更改了比较,则可以使用 TreeSet,但我想您希望能够通过整数进行查找。在这种情况下,您可以使用 TreeMultimap。
关于java - TreeMultiset 是否只保存每个键的重复次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18088057/