title: A set that maintains insert order and allows accessing elements by its index
body: <p>I basically <em>need</em> a data structure that works just like a <code>Set</code>, but that not only maintains insert order as let's me get them later by a <code>get(index)</code> method.</p>
  
  <p>What is the data structure best suited to achieve this? I wouldn't have a problem in having to implement one, if needed. In the worse case I could just use both an ArrayList and a HashSet, but I'm wondering whether there is a specialized data structure up to the task.</p>
  
  <p>Performance is paramount (otherwise I could just do a <code>O(n)</code> search over a regular list!) and I'm not that worried about spatial complexity.</p>