首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Dart中使用重复键的映射实现

在Dart中使用重复键的映射实现
EN

Stack Overflow用户
提问于 2020-07-29 05:36:43
回答 3查看 2.2K关注 0票数 1

我想要一个具有重复键的映射。Dart或具有此功能的实用程序库中是否有这样的映射?

我正在使用下面的方法来获取项目的数量:

代码语言:javascript
复制
myList.forEach(
      (element) {
        if (!myMap.containsKey(element)) {
          myMap[element] = 1;
        } else {
          myMap[element] += 1;
        }
      },
    );

然后将键/值转换为列表:需要切换键/值...

代码语言:javascript
复制
final keys = myMap.keys.toList();
final itemSpit = keys.map((e) => e.toString().split('§º')).toList();
final values = myMap.values.toList();

把它放在地图上

代码语言:javascript
复制
final map = Map();

    for (var i = 0; i < values.length; i++) {
      map[values[i]] = itemSpit[i];
    }

显然,键在for循环中被覆盖了。

然后迭代贴图(将关键点/值放在颤动小部件中)

代码语言:javascript
复制
final cells = map.entries
        .map((e) => ........

如果有重复的值,THe first方法会增加值计数。所以我有这个。... {面包白: 3,玉米黄小:5 ..etc..}

然后我必须拆分字符串,输出如下所示

代码语言:javascript
复制
5 bread white large
3 corn yellow small
EN

回答 3

Stack Overflow用户

发布于 2020-07-29 06:09:06

您可以创建如下示例所示的Map<K,List<V>>,而不是定义允许重复键的映射:

代码语言:javascript
复制
void main() {
  final map = <String, List<int>>{};

  addValueToMap(map, 'Test 1', 1);
  addValueToMap(map, 'Test 1', 2);
  addValueToMap(map, 'Test 2', 3);
  addValueToMap(map, 'Test 1', 4);
  addValueToMap(map, 'Test 2', 5);
  addValueToMap(map, 'Test 3', 6);

  print(map); // {Test 1: [1, 2, 4], Test 2: [3, 5], Test 3: [6]}
}

void addValueToMap<K, V>(Map<K, List<V>> map, K key, V value) =>
    map.update(key, (list) => list..add(value), ifAbsent: () => [value]);

然后,您可以请求一个给定的键,并获得连接到该键的所有值的列表。

票数 4
EN

Stack Overflow用户

发布于 2020-07-29 09:32:29

package:quiver提供了一个带有List-basedSet-based实现的MultiMap类。

票数 1
EN

Stack Overflow用户

发布于 2020-07-29 15:13:47

您可以直接从第一张地图创建Flutter小部件吗?

代码语言:javascript
复制
var widgets = [for (var e in myMap.entries) MyWidget(
  count: e.value,
  strings: [... e.key.split("§º")])];

构建中间地图似乎是导致问题的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63143135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档