导言
填鸭似的教育确实不行,我高中时学过集合,不知道有什么用,毫无兴趣,等到我学了一门编程语言后,才发现集合真的很有用;可以去重,可以看你有我没有的,可以看我有你没有的;列表是我最喜欢的数据结构,我最喜欢把列表和元组结合起来用,比如[(张飞,刘备集团),(贾诩,曹操集团)]。映射,也就是Python里面的字典,也是我的最爱之一!让学习变得有趣起来,就用三国混战来举例吧!
列表映射和集合出场
错误处理
//叫一个没来的将领,会发生什么? try{String myGengeral = generalInfo['马超']; }catch(e){print('出错:$e'); }
出错:type 'Null' is not a subtype of type 'String'
代码
void main(){print('***************************列表**********************************');List<String> generals = ['赵云','吕布','典韦','夏侯惇','赵云'];String liubeiGroup = generals[0];print('刘备集团将领有:$liubeiGroup');//典韦要保护曹操的,换曹仁出场generals[2] = '曹仁';print('曹操换人后,出场混战的将领有:$generals');//孙权说:“你们又不带我玩?我要派甘宁来参加!”generals.add('甘宁');print('孙权加人后,出场混战的将领有:$generals');//曹操说:“像吕布这种小人,不要让他入场,必须德才兼备才有资格入场!”generals.remove('吕布');print('移除人品差的后,出场混战的将领有:$generals');//组委会主席汉献帝说:“让我统计下参赛选手数量,听我念名单依次入场!”print('汉献帝宣布:总决赛出场混战的将领总共有:${generals.length}位!');for (String general in generals){print('请入场:$general!');}print('***************************映射**********************************');Map<String,dynamic> generalInfo = {'名字':'赵云','公司':'刘备集团','性别':'男',};print('性别有点多余');generalInfo.remove('性别');print(generalInfo);print('第一个出场的是${generalInfo['名字']}');//自我介绍了说了名字么?print('${generalInfo.containsKey('名字')}');List<String> keys = generalInfo.keys.toList();print(keys);List<dynamic> values = generalInfo.values.toList();print(values);generalInfo.forEach((key,value){print('$key:$value');});print('***************************集合**********************************');Set<String> newGenerals = {'刘备','张飞','关羽','关羽'};print(newGenerals);//上面那个列表里面,赵云报了两次名,这是不行的List<String> uniGenerals = generals.toSet().toList();print(uniGenerals);}