Dart中具有重复关键点的地图实现

Dart中具有重复关键点的地图实现,dart,Dart,我想要一张有重复钥匙的地图。Dart或实用程序库中是否有具有此功能的地图 我使用以下方法获取项目计数: myList.forEach( (element) { if (!myMap.containsKey(element)) { myMap[element] = 1; } else { myMap[element] += 1; } }, ); 然后将键/值转换为列表:需要切换

我想要一张有重复钥匙的地图。Dart或实用程序库中是否有具有此功能的地图

我使用以下方法获取项目计数:

myList.forEach(
      (element) {
        if (!myMap.containsKey(element)) {
          myMap[element] = 1;
        } else {
          myMap[element] += 1;
        }
      },
    );
然后将键/值转换为列表:需要切换键/值

final keys = myMap.keys.toList();
final itemSpit = keys.map((e) => e.toString().split('§º')).toList();
final values = myMap.values.toList();
把它放在地图上

final map = Map();

    for (var i = 0; i < values.length; i++) {
      map[values[i]] = itemSpit[i];
    }
如果存在重复的值,第一种方法将增加值计数。所以我有这个。。。{面包白色大:3,玉米黄色小:5..等等..}

然后我必须拆分字符串,并像这样输出

5 bread white large
3 corn yellow small

您可以创建如下示例所示的地图,而不是定义允许复制关键点的地图:

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]);

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

您可以创建一个类似以下示例的映射,而不是定义允许重复键的映射:

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]);

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

提供了一个包含和实现的类。

提供了一个包含和实现的类。

您可以直接从第一个映射创建颤振小部件吗

var widgets=[对于myMap.entries MyWidget中的var e 计数:e.value, 字符串:[…e.key.split§º]];
构建中间映射似乎是造成问题的原因。

能否直接从第一个映射创建颤振小部件

var widgets=[对于myMap.entries MyWidget中的var e 计数:e.value, 字符串:[…e.key.split§º]];
构建中间映射似乎是造成问题的原因。

多次请求密钥时应返回什么值?我只想迭代映射。。。我把一个计数存储为一个键,我想如果你展示一个你想在Dart中表示的数据结构的例子,以及你想如何迭代它,会更容易一些。我在其他语言中见过它。我只是想知道如何在达特做到这一点我很抱歉,但我不知道你试图实现什么。为什么需要切换键/值?当多次请求一个键时,应该返回什么值?我只想迭代映射。。。我把一个计数存储为一个键,我想如果你展示一个你想在Dart中表示的数据结构的例子,以及你想如何迭代它,会更容易一些。我在其他语言中见过它。我只是想知道如何在达特做到这一点我很抱歉,但我不知道你试图实现什么。为什么需要切换键/值?谢谢,看起来不错。如果可以的话,我明天会把它标记为正确的。现在太累了!谢谢,看起来不错。如果它能用的话,我明天会把它改好的。现在太累了!