es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El Flutter Hashmap> está sobrescribiendo el tipo List en el Hashmap en cada añadido.

El Flutter Hashmap<String, List> está sobrescribiendo el tipo List en el Hashmap en cada clave única. Básicamente, el código se ve así:

    HashMap<String, List<Jobs> > ElementJobMap = new HashMap<String, List<Jobs> >();
for (int i = 0; i < _JobsList.length; i++) {
  String Key = _JobsList[i].elementID.toString();
  if (ElementJobMap.containsKey(Key)) {
    if (Key == _JobsList[i].elementID.toString()) {

        ElementJobMap.update(Key, (value) {
        value.add(_JobsList[i]);
        return value;
      });

    }
  } else {

    ElementJobMap[Key] = tmpList;

  }
}

Así que si hay dos claves String diferentes y cada clave tiene una lista única llena de varios valores en cada una. Si escribo en la List, cada instancia se actualiza y, por lo tanto, los datos son los mismos. Debe tenerse en cuenta que este código puede tener cosas innecesarias, pero he estado improvisando desde hace un tiempo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código anterior es que el tipo List en el Hashmap se está sobrescribiendo en cada clave única. Esto se debe a que se está utilizando la misma instancia de la List para todas las claves, lo que significa que cada vez que se realiza una actualización en la List, se refleja en todas las claves que la referencian.

    Para solucionar este problema, se necesita crear una nueva List para cada clave única. Esto se puede hacer reemplazando la línea ElementJobMap[Key] = tmpList; con ElementJobMap[Key] = [ _JobsList[i] ];. Esto creará una nueva List cada vez que se encuentre una clave única, asegurando que cada clave tenga su propia List única de Jobs que se puede actualizar sin afectar a otras claves.

Comments are closed.