I have a collection that I'm putting elements into based on some sort of input. About 90% of the time, there will be only one element in this collection. There may be more elements, but each element past the first has an exponentially decreasing chance of appearing. So it might have 2 elements 9% of the time, 3 elements 0.9%, 4 elements 0.09%, etc.
What data structure is most efficient here? My two ideas are an ArrayList with an initial size of 1, or some other very small number (maybe 2 or 3?), or a LinkedList, which will always have the overhead of the head/tail pointers, but won't waste any time/space allocating additional memory.
I realize that whatever I choose probably isn't terribly important, but I've come across this situation multiple times and I'm interested if there's an established convention.