每次我需要迭代 a 的值时Map
在 Dart 中,我考虑了这个循环将产生的成本,包括复杂性和产生的垃圾量。有两种方法可以迭代 a 的值Map
: Map.values
, and Map.entries
。例如:
Map<String, Person> people;
int olderThan(int age) {
int result = 0;
for(Person p in people.values)
if(p.age > age) result++;
return result;
}
int olderThan2(int age) {
int result = 0;
for(MapEntry<String, Person> me in people.entries)
if(me.value.age > age) result++;
return result;
}
// Which one is faster: olderThan or olderThan2?
If Map
将其值内部存储为MapEntry
对象,有可能entries
与以下一样有效甚至更高values
。实施细则Map
都深埋在 Dart 库中,所以我想知道是否有人拥有这方面的知识并且可以阐明这个主题。
我明白那个Map.entries
使您可以访问密钥,但我谈论的是不需要使用条目密钥的情况。我也明白有不同的实现Map
。我最感兴趣的是默认实现,LinkedHashMap
,但如果知道不同之间是否存在差异就好了Map
这方面的实施。
我们应该根据需求迭代地图。
-
如果我们只需要迭代键
map.keys.forEach((k) => print("Key : $k"));
-
如果我们只需要迭代值
map.values.forEach((v) => print("Value: $v"));
-
如果我们需要迭代两个键值。
map.forEach((k, v) => print("Key : $k, Value : $v"));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)