Этого можно добиться следующим способом.
Этот метод возвращает карту с ключом в качестве символа и значением в качестве его вхождения во входной строке.
Map countMap = new HashMap ();
public void updateCountMap(String inStr, Map<Character, Integer> countMap)
{
char[] chars = inStr.toCharArray();
for(int i=0;i<chars.length;i++)
{
if(!countMap.containsKey(chars[i]))
{
countMap.put(chars[i], 1);
}
countMap.put(chars[i] ,countMap.get(chars[i])+1);
}
return countMap;
}
То, что мы можем сделать, это прочитать файл построчно и вызвать вышеупомянутый метод для каждой строки. Каждый раз, когда карта будет продолжать добавлять значения (количество вхождений) для символов. Таким образом, размер массива символов никогда не будет слишком длинным, и мы достигнем того, что нам нужно.
Преимущество:
Одна итерация по символам входной строки.
Размер символьного массива никогда не увеличивается до предела.
Карта результатов содержит вхождения для каждого персонажа.
Приветствия