While making my program i have come across this requirement that i have to assign unique id’s to some Objects that i create. Now i am creating the objects dynamically on GUI, and initially i used simple counter to assign int value to the created node, and it worked just fine.
However the problem that this approach creates is that if while creating the GUI, if some node has to be deleted, this id is also removed and is never used again. With the next new node, everytime i have to use the latest counter value and this creates lot of missing int values if nodes are deleted during the process.
I wanted to reuse those missing id’s upon creating of new nodes, for this i am confused which approach i should addopt.
MY Ideas:
-
Using a ArrayList that contains the available values, plus if a node
is deleted, it’s id is added to this list, i sort this list and use
the minimum value for new node. Fine but, when i use this value, if
i remove it from List, the index is not deleted and this causes
problem. - HashMap, similarly like above i add available id’s and remove not used, but not sure how to sort this hashMap???
Can you suggest how i should go about it? May be i need some kind of stack where i can push values, sort it and use the minimum value, and if that i used, it is removed from this stack, please give some ideas about this how to accomplish this task???
Keep a list of the deleted IDs, and when you create a new node, check that list for an ID to re-use (doesn’t matter which you take); if the list is empty (as it will be initially), get a new ID “the old way”. Even more clever: make the list an object that will generate a new ID if there aren’t any deleted ones in it, so the caller doesn’t have to worry about HOW the ID was arrived at.