Foros del Web » Programación para mayores de 30 ;) » Java »

Contar palabra más repetida

Estas en el tema de Contar palabra más repetida en el foro de Java en Foros del Web. Buenas , como podría saber la palabra mas repetida en un array de palabras y que también se supiera el número de apariciones ? Gracias....
  #1 (permalink)  
Antiguo 11/07/2015, 17:36
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 4 años, 4 meses
Puntos: 0
Contar palabra más repetida

Buenas , como podría saber la palabra mas repetida en un array de palabras y que también se supiera el número de apariciones ? Gracias.
  #2 (permalink)  
Antiguo 11/07/2015, 21:02
Avatar de carlitosMiranda  
Fecha de Ingreso: marzo-2015
Ubicación: Colombia
Mensajes: 32
Antigüedad: 4 años, 8 meses
Puntos: 1
Respuesta: Contar palabra más repetida

Hola frannlopezz tengo este codigo. Espero te sirva
Código Java:
Ver original
  1. import java.util.ArrayList;
  2. class ContadorPalabras{
  3.      public static void main(String[]args){
  4.          String palabras[]={
  5.             "mujeres", "feliz", "amor", "prima", "iGuAl", "todos", "triste",
  6.              "tiempo", "nuestro", "VERDAD", "dura", "NUESTRO" ,
  7.              "hermoso", "prima", "MUJERES", "gente", "tiempo", "HERMOSO",
  8.              "gente", "dURa", "amor", "PRIMA", "amor",
  9.              "amor", "prima", "Nuestro", "GENTE", "mujeres", "AMOR", "hermoso", "mujeres", "hermoso",
  10.              "recuerda", "OIDO", "HABLAR", "recuerda", "feliz", "triste", "todos",
  11.              "estabas", "mujeres", "triste", "igual", "FELIZ",
  12.              "RECUERDA", "HoNestos", "honestos", "FelIZ", "honestos",
  13.              "amor", "oido", "oido", "TODOS", "IGual", "IGUAL" ,
  14.              "Hablar", "TIEMPO", "triste", "triste", "oido" ,
  15.              "feliz", "HONESTOS", "hermoso", "oido", "pRIMA",
  16.              "triste", "VERDAD", "feliz", "gente", "recuerda" ,
  17.              "Prima", "recuerda", "triste", "mujeres", "hermoso",
  18.              "oido", "TRISTE", "recuerda", "recuerda", "prima", "mujeres", "oido", "triste", "recuerda",
  19.              "VerDad", "AMOR", "tiempo", "DURA", "igual", "gentE", "hermoso"
  20.          };
  21.          ArrayList datos = new ArrayList<>();
  22.          for (String palabra : palabras) {
  23.              String minus = palabra.toLowerCase();
  24.              int contador = 0;
  25.              if(!datos.contains(minus)){
  26.                 for (String demas : palabras) {
  27.                     if(demas.toLowerCase().equals(minus)){
  28.                         contador++;
  29.                     }
  30.                 }
  31.                 datos.add(minus);datos.add(contador);
  32.                 System.out.println(minus+": "+contador+((contador == 1)?" vez":" veces"));
  33.              }
  34.          }
  35.      }
  36.  }

Saludos.
  #3 (permalink)  
Antiguo 13/07/2015, 05:55
Avatar de Tipdar  
Fecha de Ingreso: octubre-2005
Ubicación: Aquí y allá.
Mensajes: 323
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Contar palabra más repetida

Hola amigos del foro, he aquí os dejo otra opción:

Código PHP:
Map<StringIntegermapa = 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<?>, extends ComparableMap<KVsortByValues(Map<KVmap) {
    List<
Map.Entry<KV>> entries = new LinkedList<Map.Entry<KV>>(
                
map.entrySet());
    
Collections.sort(entries, new Comparator<Map.Entry<KV>>() {
        public 
int compare(Entry<KVo1Entry<KVo2) {
            return 
o1.getValue().compareTo(o2.getValue());
        }
    });
    
Map<KVsortedMap = new LinkedHashMap<KV>();
    for (
Map.Entry<KVentry 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.
__________________
El último TipdaR
  #4 (permalink)  
Antiguo 13/07/2015, 14:18
Avatar de carlitosMiranda  
Fecha de Ingreso: marzo-2015
Ubicación: Colombia
Mensajes: 32
Antigüedad: 4 años, 8 meses
Puntos: 1
Respuesta: Contar palabra más repetida

Hola amigos, me parece excelente el codigo propuesto me parece q complementa los objetivos q 'frannlopezz' quiere cumplir. Excelente

Etiquetas: palabra, repetida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 08:05.