Comparación de clave hashmap con palabras en archivo de texto y valor de actualización

He estado usando un hashmap para almacenar palabras únicas de un archivo de texto. Ahora, necesito comparar cada palabra en el mapa hash con otro archivo de texto más grande y realizar un seguimiento de la frecuencia de cada palabra tal como aparece en el archivo de texto.

Mientras agrego al hashmap al principio, solo inserto la clave y establezco el valor en 0. Mi plan es usar 'value' como la frecuencia de cada palabra en el archivo de texto más grande.

Mi intento es el siguiente; Primero uso el escáner para leer el archivo original y almacenar las palabras en el hashmap. A continuación, uso el escáner nuevamente, pero esta vez asociado con el archivo de texto más grande. De aquí en adelante, estoy un poco atascado. No sé cómo actualizar el 'valor' e indexar la 'clave'.

Aquí está lo que tengo;

Scanner fileScanner = new Scanner (new File (fileName));
fileScanner.useDelimiter (" ");

while (fileScanner.hasNext()) {
    for (int i = 0; i < hashmap.size(); i++) {   //This I use to index the key field
        if (hashmap.get(i).equals(fileScanner.next().toString()) {
            int freq ++;
            //How do I update the value field of the corresponding value?
        }
    }
}

Ahora, obviamente, nada en el código anterior funciona, y estoy teniendo algunos problemas para encontrar una manera. ¿Podría alguien ayudarme por favor?

Respuesta 1

Si intenta contar el número de palabras y almacenarlo como mapa, cuando se agreguen nuevas palabras, intente poner el valor 1 no 0 (las palabras existen al menos una vez).

Para la actualización, compruebe si el mapa contiene valor para la clave, luego póngalo una vez más con un valor incrementado. El valor anterior será reemplazado.

Prueba esto

HashMap<String, Integer> hashmap = new HashMap<String, Integer>();
String key = "myWord";
hashmap.put(key, 1);
Integer tmp = null;
// lets increment value if exist in map or put new value if doesn't exits in map
if ((tmp = hashmap.get(key)) != null) {
    //if map contains word
    hashmap.put(key, tmp + 1);
} else {
    //if word is new, map does't contain it as key 
    hashmap.put(key, 1);
}
System.out.println(hashmap);
//out ->{myWord=2}
Respuesta: 2

Estoy trabajando en una aplicación en la que se realiza una tarea de programación repetitiva. Como parte de esta tarea, se asigna un valor a una variable, luego esta variable se inserta en el hashmap, utilizado en ...

Estoy declarando una variable de tipo Condición: Condición privada waitingCond; Luego, en el constructor de Bridge, declaro una variable de condición asociada a la misma variable: waitingCond = lock ...

Estoy usando la herramienta GATE para el procesamiento del lenguaje natural ... Estoy usando el código Java para leer líneas de la oración y obtener las palabras clave ... qué modificación se debe hacer en xml criollo para leer completa ...

Estoy haciendo una aplicación para Android, estoy usando la API de Google Directions para obtener y analizar cada tramo de la ruta. Estoy mostrando la ruta en el mapa (eso ya está funcionando) Quiero mostrar una lista de ...