Моя цель — создать частотное распределение каждого символа в больших плоских файлах (1 ГБ+) для последующего импорта в базу данных. В идеале на выходе должен быть список символов ASCII, за каждым из которых следует число.
В настоящее время я использую хэш-карту для создания распределения каждого значения в строке, и это работает, я просто не уверен, как реализовать это в большом файле. Кроме того, в моем выводе символы CR и LF (или / r / n) приводят к новой строке со счетчиком на следующем.
Вот текущий код:
public class CharCount{
public static void main(String[] args) {
String s = "abcdefghijklmnopqrstuvwxyz1234567890,.)(/\\<>?!@#$%^&*_-+=\r\n";
char[] arr = s.toCharArray();
HashMap <Character,Integer> count = new HashMap<Character, Integer>();
for (char c : arr) {
try {
count.put(c, count.get(c)+1);
} catch (NullPointerException e) {
count.put(c, 1);
}
}
for (Character c: count.keySet()) {
System.out.println(c + " = " + (int)c + " = " + count.get(c));
}
}
}
Идеальный вывод будет выглядеть примерно так:
000 NUL 4124435 001 SOH 0
002 STX 0
003 ETX 0
.....
253 ý 0
254 þ 0
255 ÿ 0
Определенно ценю любую помощь!
for (char c=0; c<256; c++) map.put(c, Integer.valueOf(0));
- person user949300   schedule 05.01.2012