Похоже, что ваши точные потребности удовлетворяются LinkedHashMultimap в библиотеке GC. Если вы можете жить с зависимостями, весь ваш код становится:
SetMultimap<String,User> countryToUserMap = LinkedHashMultimap.create();
// .. other stuff, then whenever you need it:
countryToUserMap.put(user.getCountry(), user);
поддерживается порядок вставки (все выглядит так, как будто вы делали со своим списком), а дубликаты исключаются; Вы можете, конечно, переключиться на простой набор на основе хеша или набор деревьев по необходимости (или список, хотя это, кажется, не то, что вам нужно). Пустые коллекции возвращаются, если вы запрашиваете страну без пользователей, все получают пони и т. Д. Я имею в виду, ознакомьтесь с API. Это многое сделает для вас, поэтому зависимость может стоить того.