我有这样的结构:
public class Foo
{
public int A ;
public int B ;
public int C ;
}
我需要将它们一个接一个地添加到一个集合中,这样我最终得到的副本不超过一个,其中 A、B 和 C 都相等。我还需要引用另一个类的对象,如下所示:
public class Bar
{
public Foo A ;
public Foo B ;
public Foo C ;
}
我尝试使用 a TreeSet < Foo >
,它可以确保唯一性,但我无法从 TreeSet 中获取引用(只有它是否在集合中的布尔值),所以我无法将该引用传递给Bar
. 我尝试将 aTreeMap < Foo , Integer >
与 an 一起使用ArrayList < Foo >
,这可以确保唯一性并允许我获取对对象的引用,但它会浪费大量时间和内存来维护 theArrayList
和Integer
s。
我需要一种方式来说“如果Foo
集合中还没有这个,添加它;否则,给我Foo
已经在集合中的,而不是我创建的,以检查它在集合中的存在。”。
(我突然想到我可以做类似的事情TreeMap < Foo , Foo >
,这会做我想做的事,但它似乎仍然是一种浪费,即使它远不及一个,所以我会继续这个问题,希望启示。)
(是的,我确实实现Comparable
了在树中进行唯一性检查;那部分已经起作用了。)