I need a data structure that
- Must be ordered (adding elements
a, b and c
to an empty structure, will make them be at positions0, 1 and 2
). - Allows to add repeated items. This is, I can have a list with
a, b, c, a, b
. - Allows removing all ocurrences of a given item (if I do something like
delete(1)
, it will delete all ocurrences of1
in the structure). If I have elementsa, b, c, d, c, e
and remove elementc
, I should geta, b, d, e
. - I just need to access the elements in two ways. The first, is when deleting a given ocorrence (see point above) and the other is when I convert the data I have in this structure to a list.
I can't really pick what the best data structure could be in here. I thought at first about something like a List(the problem is having an O(n)
operation when removing items), but maybe I'm missing something? What about trees/heaps? Hashtables/maps?
I'll have to assume I'll do as much adding as removing with this data structure.
Thanks