我有一组对象,我们称之为A、B、C、D...,其中一些相等。如果A和C相等,则我想用A替换所有对C的引用。这意味着(a)对象C可以被垃圾回收,释放内存,(b)我以后可以使用“==”来比较对象,而不是昂贵的
我的直觉是使用
目前,我使用的是
equals()
操作。(这些对象很大,equals()
操作很慢。)我的直觉是使用
java.util.Set
。当我遇到C时,我可以轻松地查看是否存在与C相等的条目。但是,如果有一个这样的条目,似乎没有简单的方法找出那个条目,并将我的引用替换为现有的条目。我错了吗?显然,遍历所有条目以找到匹配项是不可行的。目前,我使用的是
Map
,其中值始终与键相同。然后调用map.get(C)
找到A。这有效,但感觉非常费解。有更优雅的方法吗?
HashSet
源代码,public boolean add(E e) { return map.put(e, PRESENT)==null; }
。如果我没有弄错,这恰好是你想要的行为? - Neil