#flutter #dart #amplify
#flutter #dart #усилить
Вопрос:
Хэш-карта Flutter<String, List> перезаписывает тип списка в хэш-карте для каждого отдельного уникального ключа. Таким образом, в основном код выглядит так:
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;
}
}
Итак, если есть два разных строковых ключа, и каждый ключ имеет уникальный список, заполненный несколькими значениями в каждом. Если я записываю в список, каждый экземпляр обновляется, и поэтому это все те же данные. Следует отметить, что в этом коде могут быть бессмысленные вещи, но я просто некоторое время плевался.
Комментарии:
1. кажется, вам нужны groupListsBy
2. Это кажется многообещающим наверняка. Спасибо за быстрый ответ. @pskink
3. или groupBy функция верхнего уровня, в документах говорится: «Группирует элементы в значениях по значению, возвращаемому ключом. Возвращает сопоставление из ключей, вычисленных по ключу, со списком всех значений, для которых ключ возвращает этот ключ. Значения отображаются в списке в том же относительном порядке, что и в значениях. »
4. groupListsBy решил этот вопрос. По правде говоря, я закончил тем, что использовал stream, чтобы заставить все это работать, хотя, поскольку это нужно было соблюдать.
Ответ №1:
ElementJobMap[Key] = tmpList;
Похоже, вы добавляете один и тот же экземпляр списка в качестве основы для каждой записи. Затем вы добавляете к этому единственному экземпляру. Если вы хотите, чтобы ваша хэш-карта содержала разные экземпляры списка для каждого ключа, вам нужно его создать.
Тем не менее, вам, вероятно, следует изучить методы группировки, предоставляемые через пакеты, нет смысла пытаться сделать это вручную.