给予
Map<String, List<String>>
其中:
何时
当用户选择一个名字时,我需要通过与球员名单进行比较来输出球队代码(可能会有重复的名字和其他我尚未充分考虑的东西)。
我确实找到了可行的方法,但是不确定当数据量增加时它是否能正常工作。
//Team Map Example
var teamMap = {
"TeamFoo": ["Bob", "John", "Jill"],
"TeamBar": ["Mike", "Fred"]
};
//Loop Example
teamMap.forEach((key, value) {
if (value.indexOf(_lastName) >= 0) {
teamName = key;
}
});
是否有更好的方式编写此功能以提高速度或可读性?
答案 0 :(得分:1)
我要做的一项改进是在找到值时停止操作,如果重复,则您的方法是合适的,因为无论如何您都必须迭代整个地图。
如果没有重复,这就是我要怎么做。
代码:
String teamCode = teamMap.keys.firstWhere((key) => teamMap[key].contains(_lastName));
说明:
teamMap.keys
=>返回地图的键列表
teamMap[key]
=>返回对应于该键的玩家列表
对于每个键
检查相应的列表是否包含 _lastName
teamMap[key].contains(_lastName));
但是,要处理重复项,我建议添加“#”后跟重复项计数。如果那不适合玩家的名字,那就用你的想象力消除重复的东西。
让我知道您是否遇到任何错误。
此外,如果您喜欢可视化文档,了解常规Map / List / Set方法i'd recommend this page。