java - TreeMultiset 是否只保存每个键的重复次数?

标签 java guava

我用 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/

相关文章:

java.lang.IllegalArgumentException : warning no match for this type name: UserDaoImpl [Xlint:invalidAbsoluteTypeName]

java - Solr 和 postgresql 集成

java - 是否有任何框架/工具可用于创建基于模块的 Java Swing 应用程序?

java - 在 Java 中,如何使用 Google 的 guava CharStreams.toString 进程中的 inputStream?

java - TreeRangeMap时间和空间复杂度

java - 需要有关 NoSuchMethodError : com. google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor 的帮助;在 IntelliJ 中

java - 考虑到旧 key 的 Guava 缓存

java - 为独立应用程序绑定(bind)一个 java swing gui 和 c++ 后端,它们形成两个不同的项目

java - RestTemplate简单获取示例

java - 如何检查至少一个 boolean 值是否为真?