首页 > 解决方案 > 在索引 0 处插入新对以进行映射。(飞镖)

问题描述

我要循环这张地图。所以我希望能够在这张地图中插入一对。我该怎么做?

  Map<String, String> fruits = {'Apple': 'Golden', 'Orange': 'Orange'};

  fruits.insert(0, {'Grape': 'Green'}); // doesn't work

  print(fruits); //{Grape: Green, Apple: Golden, Orange: Orange}

标签: dart

解决方案


地图条目没有数字索引(Map<int, T>当然,除非您正在使用),并且没有 Map.insert 方法。相反,将一对添加到映射的方法是将值分配给键,如下所示:

fruits['Grape'] = 'Green';

对于一些附加信息, Map 是无序的,这意味着没有索引 0 -但是,如果你真的必须有一组有序的键和值,你可以使用List<MapEntry>

List<MapEntry<String, String>> fruits = [
  MapEntry('Apple', 'Golden'), 
  MapEntry('Orange', 'Orange')
];

fruits.insert(0, MapEntry('Grape', 'Green'));

print(fruits); // [MapEntry(Grape: Green), MapEntry(Apple: Golden), MapEntry(Orange: Orange)]

更好的是,您可以考虑使用 Fruit 类,然后使用List<Fruit>

class Fruit {
  final String name;
  final String color;

  Fruit(this.name, this.color});
}

然后:

List<Fruit> fruits = [
  Fruit('Apple', 'Golden'), 
  Fruit('Orange', 'Orange')
];

fruits.insert(0, Fruit('Grape', 'Green'));

print(fruits);

推荐阅读