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.
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.
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’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com