java - 向 Java 集合添加额外的逻辑

标签 java collections

我的应用程序中有 3 个不同的 TreeSet 对象,所有这些对象都存储同一类对象。

但是,在任何一个时间点,单个对象可能只存在于一个 TreeSet 中。

因此,如果我使用 contains() 查询每个 TreeSet 中的特定对象,它应该只存在于其中一个对象中。

有没有一种简单的方法可以轻松地将这种逻辑添加到我的 TreeSet 中?显然,我可以在每次操作后执行上述 contains() 检查自己,但只是想知道是否有更好的方法?

谢谢

最佳答案

您可以保留一个映射,将对象映射到它们当前所属的 TreeSet。如果一个对象没有条目,则可以将它添加到一个 TreeSet 中;否则它必须在分配给新的之前从映射的 TreeSet 中删除。

编辑:

根据您的要求,这里有一个代码片段说明如何完成此操作:

Map<MyObject, TreeSet<MyObject>> map = new HashMap<MyObject, TreeSet<MyObject>>();

void addToSet(MyObject obj, TreeSet<MyObject> set) {
    TreeSet<MyObject> otherSet = map.get(obj);
    if (otherSet != null) {
        otherSet.remove(obj);
    }
    set.add(obj);
    map.put(obj, set);
}

void removeFromSet(MyObject obj, TreeSet<MyObject> set) {
    set.remove(obj);
    map.remove(obj);
}

关于java - 向 Java 集合添加额外的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8426193/

相关文章:

java - 如何在 Java 中使用 XPath 读取 XML

java - 如何使用流在比赛结束后找到一件元素?

java - IntelliJ 中的单一单元测试无法找到 Spring .properties 文件

Java 集合 : which collection to use and when?

java - 如何从 HashMap 中检索键和值

java - 将某些类的 Java 集合转换为字符串集合

java - 如何在 JDK 中找到完整的平台依赖陷阱列表,如时区、编码、行尾等?

java - 将 Ecmascript (Java,javascript,Actionscript) 知识翻译为 Objective C

javascript - 骨架.js集合-如何为获取定义成功回调(尽管是递归的)

java - 我什么时候使用 java Collections singletonMap 方法?