【发布时间】:2022-06-24 14:46:31
【问题描述】:
说我有
Map<String, double> list = {};
list.putIfAbsent("hello", () => 2.0);
list.putIfAbsent("hi", () => 5.0);
list.putIfAbsent("world", () => 8.0);
我怎样才能插入一个对象,使列表变成这样
"hello" = 2.0
"hi" = 5.0
"hi there" = 12.0
"world" = 8.0
我找到了“hi”对象,我只需要将它放在列表中的旁边即可。
谢谢!
【问题讨论】:
-
您的
list变量不是列表,而是Map。一般来说,不应该假设地图中元素的顺序(特别是,正如您所发现的,如果没有完整的重新创建,很难在地图中保持特定的元素顺序)。但是,列表确实能够在特定索引处插入元素:api.dart.dev/stable/2.17.5/dart-core/List/insert.html -
@julemand101 需要注意的是,在 Dart 中使用非常量字面量创建的映射将是
LinkedHashMap,因此顺序将是插入顺序。据我所知,没有办法按顺序将元素放入 aLinkedHashMap的特定位置(除非您删除该位置之后的所有项目,然后在新元素之后重新添加它们)。 -
@Abion47 我完全同意。我关于顺序的陈述更多地是关于在对其进行更改时将创建的地图保持在某个指定顺序的问题,因为正如您还提到的那样,不能插入特定位置或进行任何排序。我们能做的最好的事情是
SplayTreeMap,但这只是基于key值的排序,并且仅在插入时进行。
标签: dart