Если у вас есть небольшие коллекции, то использование справочных типов, вероятно, хорошо, но есть альтернативы, и хорошим является trove4j . Trove довольно хорошо воссоздает API коллекций, используя чистые примитивы. Вознаграждение - намного меньшее использование памяти и во многих случаях лучшая производительность при вставке / поиске. Ваш пример будет выглядеть так:
TObjectIntHashMap<String> userName2ind = new TObjectIntHashMap<String>();
for (int i=0; i<=players.length; i++) {
userName2ind.put(orderedUserNames[i],i+1);
}
По моему опыту, единственным недостатком является отсутствие одновременной реализации этих программ, поэтому вам нужно найти другой способ управления безопасностью потоков.