【发布时间】:2014-03-03 01:00:50
【问题描述】:
我正在寻找一个 Set 类,它将使用给定的比较器来 removeAll()。
我使用的是 TreeSet,但几个小时后我把头发扯下来试图弄清楚为什么我的 removeAll() 没有删除我发现的任何内容...
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4730113
长话短说 removeAll() 使用 equals() 方法。 (但奇怪的是 remove() 方法没有......)
我确实想要一个 Set 来删除重复项,最好使用比较器但不是必需的,并且我不能覆盖 equals 方法 b/c 我需要它来处理其他逻辑。显然我想避免在所有元素上创建一个调用 remove() 的循环,以免将来让我(或其他人)感到困惑。
这样的动物动物存在吗?
【问题讨论】:
-
创建自己的并将所有方法委托给树集但全部删除?
-
也许可以创建你自己的 TreeSet 派生类,它的行为如你所愿,并重写了一些方法?
-
我希望存在某些东西,所以我不必这样做。我已经查看了 java lib 和 apache commons,但他们似乎没有(我可能会错过它)。 TreeSet 的行为方式对我来说仍然很奇怪。
标签: java set comparator removeall