我的应用程序中有 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/