Попробуйте использовать TreeMap<String, Integer>
(при условии, что вы хотите отсортировать целые числа), что означает, что все записи отсортированы по строковому ключу:
SortedMap<String, Integer> map = new TreeMap<String, Integer>();
map.put("ac", 0);
map.put("bc", 1);
map.put("ad", 2);
map.put("e", 3);
for( Map.Entry<String, Integer> entry : map.entrySet() )
{
System.out.println(entry.getKey() + " - " + entry.getValue());
}
Выход:
ac - 0
ad - 2
bc - 1
e - 3
Чтобы отсортировать массив и получить новый порядок предыдущих индексов, вы можете перебрать массив и добавить индексы как целочисленные объекты на карту:
String[] input = {"ab", "bc", "ad" , "e" };
SortedMap<String, Integer> map = new TreeMap<String, Integer>();
for( int i = 0; i < input.length; ++i )
{
map.put(input[i], i); //or use values from another array, e.g. map.put(inputKeys[i], inputValues[i]);
}
Если вам нужно отсортировать ключи по чему-то еще, кроме естественного порядка, вы можете добавить Comparator<String>
в конструктор TreeMap
.