Hey,
Let's say I have this type in my application:
public class A {
public int id;
public B b;
public boolean equals(Object another) { return this.id == ((A)another).id; }
public int hashCode() { return 31 * id; //nice prime number }
}
and a Set
structure. Now, I have an object of type <A
>A
and want to do the following:
- If my
A
is within the set, update its fieldb
to match my object. - Else, add it to the set.
So checking if it is in there is easy enough (contains
), and adding to the set is easy too. My question is this: how do I get a handle to update the object within? Interface Set
doesn't have a get
method, and the best I could think of was to remove the object in the set and add mine. another, even worse, alternative is to traverse the set with an iterator to try and locate the object.
I'll gladly take better suggestions... This includes the efficient use of other data structures.
Yuval =8-)
EDIT: Thank you all for answering... Unfortunately I can't 'accept' the best answers here, those that suggest using a Map
, because changing the type of the collection radically for this purpose only would be a little extreme (this collection is already mapped through Hibernate...)