Какой самый лучший / самый простой способ сортировки большого списка слов (10 000–20 000) по количеству встречений в списке в Java. Я попробовал базовую реализацию, но у меня возникает ошибка нехватки памяти, поэтому мне нужен более эффективный способ. Что бы вы предложили?
ArrayList<String> occuringWords = new ArrayList<String>();
ArrayList<Integer> numberOccur = new ArrayList<Integer>();
String temp;
int count;
for(int i = 0; i < finalWords.size(); i++){
temp = finalWords.get(i);
count = 0;
for(int j = 0; j < finalWords.size(); j++){
if(temp.equals(finalWords.get(j))){
count++;
finalWords.remove(j);
j--;
}
}
if(numberOccur.size() == 0){
numberOccur.add(count);
occuringWords.add(temp);
}else{
for(int j = 0; j < numberOccur.size(); j++){
if(count>numberOccur.get(j)){
numberOccur.add(j, count);
occuringWords.add(j, temp);
}
}
}
}
Где finalWords - список всех строк. Мне приходилось хранить количество раз, когда каждое слово встречалось в отдельном массиве, потому что я не мог придумать лучшего способа сохранить их в паре, не делая каждое слово отдельным объектом.