Проблема, с которой вы сталкиваетесь, заключается в том, что HashMap
не поддерживает порядок вставки, вместо этого используйте LinkedHashMap
.
Далее, разбивая строку на массив, затем преобразуйте ее в список перед выполнением необходимогоОперации неоптимальны, вы можете использовать метод chars()
непосредственно в строке, а затем начать выполнять необходимые операции.
Используя потоковый API, можно сделать:
Map<String, Long> resultSet =
s.chars()
.mapToObj(c -> Character.toString((char) c))
.collect(groupingBy(Function.identity(),
LinkedHashMap::new, counting()));