I have a structure like this:
public class Foo
{
public int A ;
public int B ;
public int C ;
}
I need to add these to a collection one-by-one in such a way that I end up with no more than one copy where A, B, and C are all equal. I also need references to the objects for another class, like this:
public class Bar
{
public Foo A ;
public Foo B ;
public Foo C ;
}
I tried using a TreeSet < Foo >
, which worked to ensure uniqueness, but I cannot get a reference back out of a TreeSet (only a boolean of whether or not it is/was in the set), so I can't pass that reference on to Bar
. I tried using a TreeMap < Foo , Integer >
along with an ArrayList < Foo >
, and that works to ensure uniqueness and to allow me to get references to the objects, but it wastes a massive amount of time and memory to maintain the ArrayList
and the Integer
s.
I need a way to say "If this Foo
is not yet in the collection, add it; Otherwise, give me the Foo
already in the collection instead of the one I created to check for its presence in the collection.".
(It just occurred to me that I could do something like TreeMap < Foo , Foo >
, and that would do what I want, but it still seems like a waste, even though it's nowhere near as much of one, so I'll continue with this question in hope of enlightenment.)
(And yes, I did implement Comparable
to do the uniqueness-check in the trees; That part works already.)