【发布时间】:2022-01-12 07:21:49
【问题描述】:
Flutter Hashmap
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;
}
}
因此,如果有两个不同的 String 键,并且每个键都有一个唯一的列表,每个列表中都填充了多个值。如果我写入列表,每个实例都会更新,所以它都是相同的数据。应该注意的是,这段代码中可能有一些毫无意义的东西,但我现在已经吐了一段时间了。
【问题讨论】:
-
看来你需要groupListsBy
-
看起来很有希望。谢谢你的快速反应。 @pskink
-
或 groupBy 顶级函数,文档说:“按键返回的值对值中的元素进行分组。从键计算的键返回一个映射到所有值的列表对于哪个键返回该键。值以与值中相同的相对顺序出现在列表中。"
-
groupListsBy 解决了这个问题。事实上,我最终还是使用了一个流来让这一切正常工作,因为它需要被观察到。