Hola amigos del foro, he aquí os dejo otra opción:
Código PHP:
Map<String, Integer> mapa = new HashMap<>();
for (String string : palabras) {
string = string.toLowerCase();
if (!mapa.containsKey(string))
mapa.put(string, new Integer(1));
else
mapa.put(string, new Integer(mapa.get(string).intValue() + 1));
}
Este código te pondrá dentro del mapa la cantidad de veces que se repite cada palabra.
Ya si quieres ordenarlo hay un método muy genérico para ordenar mapas que aquí dejo, con permiso de quien lo pensó e implemento, ante quien me quito el sombrero:
Código PHP:
public static <K extends Comparable<?>, V extends Comparable> Map<K, V> sortByValues(Map<K, V> map) {
List<Map.Entry<K, V>> entries = new LinkedList<Map.Entry<K, V>>(
map.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<K, V>>() {
public int compare(Entry<K, V> o1, Entry<K, V> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
Map<K, V> sortedMap = new LinkedHashMap<K, V>();
for (Map.Entry<K, V> entry : entries)
sortedMap.put(entry.getKey(), entry.getValue());
return sortedMap;
}
Luego solo quedaría:
Código PHP:
mapa = sortByValues(mapa);
Y listo, mapa ordenado.
Es un pelín más complejo que el algoritmo de carlitosmiranda, pero es otra opción.
Espero te sirva.
Espero te sirva.