Я обычно предпочитал java.util.TreeMap HashMap.Это не так быстро, но вам не нужно беспокоиться об алгоритмах хеширования или установке размера.Что еще более важно, он благоприятен для памяти, потому что он использует небольшие порции памяти, а не выделяет обширные массивы.Если вы обладаете строгим контролем над созданием и удалением ваших Карт, заранее знаете, сколько данных они будут хранить, и знаете, что количество записей не будет сильно меняться во время работы вашей программы, используйте Hashmap.В противном случае используйте Treemap.
Другая действительно классная Карта, с которой мне еще не приходилось сталкиваться в .NET, это java.util.concurrent.ConcurrentSkipListMap .Это отлично подходит для многопоточных ситуаций.Это полностью потокобезопасный и , он не блокирует.
(Я нашел этот вопрос, глядя на один закрытый, как на дубликат. Я думал, что оба вопроса могут использовать ответ, который упомянул что-токроме HashMaps, хорошие как HashMaps для большинства применений и аналогичны словарю C #.)