my dog learned polymorphism*
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


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Referencing objects in a set." Watch "Referencing objects in a set." New topic
Author

Referencing objects in a set.

Rj Meyers
Greenhorn

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
Bartender

Joined: Jan 28, 2003
Posts: 4167
    
  21

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.


Steve
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Referencing objects in a set.
 
Similar Threads
Passing by value vs. reference
call by value or call by reference
ArrayList without duplicates
Call by ref . & call by value
Generic data structures and wildcard types