Я обычно использую HashMap в своих программах, так как я знаю, что он обычно наиболее эффективен (если он правильно используется) и может легко справляться с большими картами. Я знаю о EnumMap, который очень полезен для ключей перечисления, но часто я генерирую небольшую карту, которая никогда не будет очень большой, скорее всего, будет отброшена довольно скоро и не будет иметь проблем с concurrency.
Является ли HashMap<K,V> слишком сложным для этих небольших, локальных и временных применений? Есть ли другая, простая реализация, которую я могу использовать в этих случаях?
Я думаю, что я ищу реализацию Map, которая аналогична ArrayList для List. Он существует?
Добавлено позже после ответов:
Вот сценарий, где медленная, но очень простая реализация  может быть лучше - когда у меня есть много, многие из этих Map s. Предположим, например, что у меня есть миллион или около того этих маленьких маленьких карт, каждый из которых содержит несколько (обычно менее трех) записей. У меня низкая базовая ставка - возможно, я на самом деле не ссылаюсь на них, прежде чем их отбрасывают большую часть времени. Это все еще так, что HashMap - лучший выбор для них?
Использование ресурсов - это больше, чем просто скорость - я хотел бы что-то, что не фрагментирует кучу много, и, например, сделать GCs долгое время.
Возможно, что HashMap - правильный ответ, но это не случай преждевременной оптимизации (или, по крайней мере, это может быть не так).
Добавлено намного позже после некоторого раздумья:
Я решил скомпоновать собственный SmallMap. Легко сделать один с AbstractMap. Я также добавил несколько конструкторов, чтобы a SmallMap можно было построить из существующего Map.
По пути мне пришлось решить, как представить Entry и реализовать SmallSet для метода entrySet.
Я многому научился при кодировании (и модульном тестировании этого) и хочу поделиться этим, если кто-то еще захочет этого. Он находится на github здесь.
