Я не могу сохранить файлы CSV в hashmap из hashmap из-за OutOfMemoryError.
Формат файла CSV: слово, количество
Внешний хэш-карта: HashMap> - Для хранения языкового кода и хэш-карты
Внутренний хэш-карта: HashMap - Для хранения слова и количества
Я пытаюсь просмотреть список файлов .csv (51) с общим объемом памяти 145 МБ на сервере Tomcat, Eclipse. Но я получаю OutOfMemoryError. Есть ли API для преобразования csv в hashmap в java вместо итерации файла csv построчно?
private static HashMap<String, HashMap<String, Long>> wordCountAllLang = new HashMap<String, HashMap<String, Long>>();
public static void fetchWordCount(){
HashMap<String, Long> wordCountMap;
String language, line;
String[] lineArr;
BufferedReader in = null;
try{
final File folder = new File(ProofingConstants.DICTIONARY.WORD_COUNT_DATA_FOLDER_PATH);
for (File fileEntry : folder.listFiles()) {
language = fileEntry.getName().replace(".csv", ""); //No i18n
LOGGER.log(Level.WARNING, "Language:###"+language);
if (!isDictionaryLanguage(language)){
continue;
}
//Reading the file contents and putting it in the hash map
wordCountMap = new HashMap<String, Long>();
try{
in = new BufferedReader(new FileReader(fileEntry));
while ((line = in.readLine()) != null) {
lineArr = line.split(",");
wordCountMap.put(lineArr[0], Long.parseLong(lineArr[1]));
}
}
catch(Exception e) {
LOGGER.log(Level.WARNING, "SEVERE_ERROR: Exception while reading csv file data into hashmap", e);
}
finally{
in.close();
}
//Storing the hashmap in another hash map using language as its key
wordCountAllLang.put(language, wordCountMap);
LOGGER.log(Level.WARNING, "Language completed");
}
}
catch(Exception e) {
LOGGER.log(Level.WARNING, "SEVERE_ERROR: Exception while getting word count from csv file", e);
}
}
"исключение: OutOfMemoryError"