File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes Referencing objects in a set. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Referencing objects in a set." Watch "Referencing objects in a set." New topic

Referencing objects in a set.

Rj Meyers

Joined: Aug 07, 2009
Posts: 3
I'm placing a large number of Star objects in a hashset container. I want to be able to reference and remove a particular Star from that set at some later date, but I have no references for individual stars in the code below. How does one reference a particular element of the hashset without explicitly naming it during instantiation?

I could create a single star using Star sirius = new Star(), which would allow me to type hset.remove(sirius) above. But I have 1,000 stars to create and the names will be read randomly from a file.

Thank you for your help!
Steve Luke

Joined: Jan 28, 2003
Posts: 4181

The ability to remove from a Set depends on the Object's definition of equality. For a HashSet, that would come to the combination of the Object's hashCode() and equals() methods.

So, if your Star Object has internal data which makes it unique, and you properly override the hashCode and equals methods, then you could create a NEW Star object from the same data and use that new Star to remove the old one.

For example

If your Star does have internal data, but you haven't overriden the hashCode() and equals() methods, then you should go do that.
See this, this, and this.

If the Star object does not have internal data that identifies it, then you are out of luck. In this case, your only solution would be to use a HashMap instead of a HashSet, and use the key you used to store the Star to later remove it.

I agree. Here's the link:
subject: Referencing objects in a set.
It's not a secret anymore!