Dart优化Map转List代码:如何用entries实现更优写法?
Dart Map遍历优化方案
原代码虽能正常运行,但存在三个明显问题:
- 遍历Map的keys而非entries,需要二次取值
- 捕获
colors[key]不存在的值无意义(keys本身来自当前Map,对应的value必然存在) colors[key]的二次取值会额外增加Map查找开销,降低性能
优化后的实现方案
利用Map.entries直接遍历键值对,再通过toList()将map返回的Iterable转换为List,完全匹配blend2的类型和结果:
void main() { final colors = { '1': 'red', '2': 'green', '3': 'blue' }; // 优化后的blend1:直接遍历entries,避免二次取值,转换为List final blend1 = colors.entries.map((entry) => '${entry.key}-${entry.value}').toList(); print(blend1); // 输出: [1-red, 2-green, 3-blue] final blend2 = [ '1-red', '2-green', '3-blue' ]; print(blend2); // 输出: [1-red, 2-green, 3-blue] }
优化点说明
- 直接遍历
colors.entries,每个entry同时包含key和value,无需二次查找Map - 无需
?? ''的空值处理,因为Map的entries中每个key都对应存在的value - 使用字符串插值
${}替代字符串拼接,代码更简洁易读 - 调用
toList()将map返回的Iterable<String>转换为List<String>,和blend2类型完全一致
内容的提问来源于stack exchange,提问作者Sam7919
相关产品推荐
相关产品推荐

