Если вы хотите получить лучшее из обоих миров, вы можете рассмотреть возможность использования синхронизированной LinkedHashMap, которая может использоваться в качестве кэша LRU (базовая политика удаления) и является поточно-ориентированной.
HashMapпроще и быстрее, это не очень много и не безопасно для потоков.(Именно поэтому он самый быстрый)
Большинство систем кэширования являются более сложными, что означает небольшие накладные расходы.например, они являются поточно-ориентированными (что, я уверен, вам понадобится) и поддерживают политики выселения (которые вы также указываете, что вам понадобятся)
Короче говоря, первый из них самый быстрый, но, вероятно, не будет делать то, что вам нужно,Второй поможет вам определить объем используемой памяти.