Java: obtengo errores repetidamente cuando uso repetidamente un elemento y luego actualizo el valor de esa clave en un hashmap

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, se usa en algunas operaciones y luego el valor en hashmap se reemplaza con un nuevo valor de la misma variable.

Lo que quiero decir es que, después de que se agota el primer valor, se asigna otro valor a la misma variable-> la variable se inserta en el hashmap-> valor obtenido del hashmap para usarlo en una operación-> y así sucesivamente.

De esta manera, se están agregando muchos valores-> usado-> actualizados desde el hashmap. Todo esto sucede en un ciclo while que también tiene una variable de contador.

El problema es que, en etapas aleatorias del ciclo while, de repente se produce un error de que el hashmap no contiene un objeto con la clave especificada.

Esto nunca ocurre en el mismo número de contador del ciclo while ... ¿Qué estoy haciendo mal aquí? ¿Está sucediendo esto debido a que inserto repetidamente-> usando-> actualizando valores en el hashmap?

Para su referencia, el código para insertar datos en el hashmap se proporciona a continuación:

   /* Function to store a variable- key value pair at designated level, in scraper context..
  *
  */
 public Object putVar(Object key, Variable value, Integer level) {
    super.put((this.getStringKey(key)+"~"+level.toString()), value);
    return null;
 }

El código para obtener datos del hashmap se proporciona a continuación:

 /* Function to obtain object (value) with specified key and level in scraper context...
 *
 */
public Object get(Object key, Integer level) {

    String req= this.getStringKey(key);
    boolean found=false;
    System.out.println(" REQUIRED- Variable name="+ req + "level="+ level);
    for(int i= level; i>=1; i--)
    {
        if(this.containsKey(req+"~"+level.toString()) )
        {
            found=true;
            break;
        }
    }
    if(found==true)
        return(this.get(req+"~"+level.toString()));
    else
        return null;
}

ACTUALIZACIÓN: el seguimiento de la pila de excepción se proporciona a continuación ---

 ERROR - Variable 'webpage' is not defined!
 org.webharvest.exception.VariableException: Variable 'webpage' is not defined!
at org.webharvest.runtime.processors.VarProcessor.execute(VarProcessor.java:70)
at org.webharvest.runtime.processors.BaseProcessor.run(BaseProcessor.java:119)
at org.webharvest.runtime.processors.BodyProcessor.execute(BodyProcessor.java:28)
at org.webharvest.runtime.processors.BaseProcessor.getBodyTextContent(BaseProcessor.java:176)
at org.webharvest.runtime.processors.BaseProcessor.getBodyTextContent(BaseProcessor.java:184)
at org.webharvest.runtime.processors.BaseProcessor.getBodyTextContent(BaseProcessor.java:188)
at org.webharvest.runtime.processors.FileProcessor.executeFileWrite(FileProcessor.java:146)
at org.webharvest.runtime.processors.FileProcessor.execute(FileProcessor.java:95)
at org.webharvest.runtime.processors.BaseProcessor.run(BaseProcessor.java:119)
at org.webharvest.runtime.processors.BodyProcessor.execute(BodyProcessor.java:28)
at org.webharvest.runtime.processors.WhileProcessor.execute(WhileProcessor.java:112)
at org.webharvest.runtime.processors.BaseProcessor.run(BaseProcessor.java:119)
at org.webharvest.runtime.Scraper.execute(Scraper.java:179)
at org.webharvest.runtime.Scraper.execute(Scraper.java:195)
at org.webharvest.gui.ScraperExecutionThread.run(ScraperExecutionThread.java:56)

Finalmente, el código relevante que arroja esta excepción se da a continuación: el nombre del hashmap que se usa es 'contexto'

Variable var = (Variable) context.get(name, curr_level);
 if (var == null) {
        throw new VariableException("Variable '" + name + "' is not defined!");
    }
Respuesta 1

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 ...

Soy un principiante que está aprendiendo a escribir juegos en JAVA. En el juego que estoy escribiendo, intento que sea compatible con múltiples modos de visualización. Primero déjame contarte un poco sobre cómo estoy configurando el ...