Ну, есть много возможностей для достижения этого, вопрос в том, насколько глубоко вы хотите сохранить значения.Вам нужно также первое значение после 10 операций пута?Вам это нужно отсортировать?
Вы можете достичь этого несортированным способом с помощью HashTable, см. Java HashTable: https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html
Hashtable<Key, Element> table;
Сортировать можно, используя Stack иличто-то:
HashMap <Key,Stack<Element>> values;
https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html
Таким образом, вы можете получить доступ к первому элементу, как этот
values.get("A").peek();
Если вам нужен доступ к случайным элементам в стеке, используйтеLinkedList для этого:
HashMap<Key,LinkedList<Element>> values;
values.get("A").getFirst();
values.get("A").getLast();
Убедитесь, что вы всегда переопределяете методы hashCode () и equals (), если используете что-то вроде HashMap.