如何将Map<DateTime, List>转换为Map<DateTime, int>提取列表首元素用于绘图?
问题描述
我需要处理绘图数据,现有从SQL数据库获取的类型为Map<DateTime, List>的数据:
Map<DateTime, List> data;
该列表包含多个数据库返回值,但我仅需将列表索引为0的元素作为Y值,请问如何简便地将其转换为以下类型?
Map<DateTime, int> inputData
解决方案
基础转换(假设列表非空且首元素为int类型)
直接用Map.map()遍历原Map,提取每个列表的第一个元素并强转类型:
Map<DateTime, int> inputData = data.map( (date, values) => MapEntry(date, values[0] as int), );
处理首元素非int的情况
如果列表首元素是字符串等可转为int的类型,先做字符串转换:
Map<DateTime, int> inputData = data.map( (date, values) => MapEntry(date, int.parse(values[0].toString())), );
兼容空列表的安全写法
如果存在空列表的情况,添加非空判断避免报错(示例默认空列表时Y值设为0,可按需调整):
Map<DateTime, int> inputData = data.map( (date, values) => MapEntry( date, values.isNotEmpty ? (values[0] as int) : 0, ), );
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

