Dart入门—集合类型
来源:互联网 发布:算法考题 编辑:程序博客网 时间:2024/05/17 02:15
Dart入门—集合类型
Dart核心库提供了List(列表)、Map(映射)、Set(集)三种集合类型
列表(List)
固定长度的列表,一旦定义就无法改变长度
List<int> fixedLengthList = new List(5); fixedLengthList[0] = 87; print(fixedLengthList); print(fixedLengthList[0]);
可改变长度的列表,可以根据需要改变长度
List<int> growableList = [1, 2]; print(growableList); growableList.length = 0; print(growableList); growableList.add(499); print(growableList); growableList[0] = 87; print(growableList);
几种构造函数
List([int length])
// 创建固定长度的列表 List fixedLengthList = new List(3); print(fixedLengthList.length); // 创建可改变长度的列表 List growableListA = new List(); print(growableListA.length); growableListA.length = 3; print(growableListA.length); // 创建可在固定范围内改变长度的列表 List growableListB = new List()..length = 500;
List.unmodifiable(Iterable elements)
// 创建包含所有元素的固定长度列表 List fixedLengthListB = new List.unmodifiable([1, 2, 3]); print(fixedLengthListB.length);
List.from(Iterable elements, {bool growable: true})
// 创建包含所有元素的可改变长度列表 List growableListC = new List.from([1, 2, 3]); print(growableListC.length); growableListC.add(4); print(growableListC.length);
List.filled(int length, E fill, {bool growable: false})
// 为所有元素统一赋值 List fixedLengthList = new List<int>.filled(3, 0); print(fixedLengthList);
List.generate(int length, E generator(int index), {bool growable: true})
// 用生成器给所有元素赋初始值 List fixedLengthList = new List<int>.generate(4, (int index) { return index * index; }); print(fixedLengthList);
所有属性
List fixedLengthList = new List<int>.generate(4, (int index) { return index * index; }); // 返回第一个元素 print(fixedLengthList.first); // 返回最后一个元素 print(fixedLengthList.last); // 返回列表的哈希码 print(fixedLengthList.hashCode); // 列表是否为空 print(fixedLengthList.isEmpty); // 列表是否不为空 print(fixedLengthList.isNotEmpty); // 返回一个新的迭代器 print(fixedLengthList.iterator); // 列表中多少个元素 print(fixedLengthList.length); // 返回相反顺序的列表 print(fixedLengthList.reversed); // 返回对象运行时的类型 print(fixedLengthList.runtimeType); // 列表是否只有一个元素,则否报错 print(fixedLengthList.single);
常用方法
返回多种类型的输出
List growableList = new List.from([1, 2, 3]); // 返回列表的字符串表示 print(growableList.toString()); // 返回列表的集表示 print(growableList.toSet()); // 返回列表的列表表示 print(growableList.toList()); // 用指定字符连接列表元素 print(growableList.join(","));
给列表增加元素
List growableList = new List(); // 增加一个元素到列表末尾 growableList.add(10); print(growableList); // 增加一个元素到指定下标 growableList.insert(1, 20); print(growableList); // 增加一个列表到列表末尾 growableList.addAll([30, 60]); print(growableList); // 增加一个列表到指定下标 growableList.insertAll(3, [40, 50]); print(growableList);
各种删除操作的方法
List growableList = new List.from([1, 2, 3, 3, 3, 4]); // 移除列表中匹配的第一个元素 growableList.remove(3); print(growableList); // 移除列表中第几个元素 growableList.removeAt(0); print(growableList); // 移除列表中最后一个元素 growableList.removeLast(); print(growableList); // 移除列表的所有元素 growableList.clear(); print(growableList); List<int> listB = [1, 2, 3, 4, 5]; // 移除开始下标(不包括)至结束下标(包括)内的元素 listB.removeRange(1, 4); print(listB); List<int> listA = [1, 2, 3, 4, 5]; // 移除并替换开始下标(不包括)至结束下标(包括)内的元素 listA.replaceRange(1, 4, [6, 7]); print(listA); List<String> numbersA = ['one', 'two', 'three', 'four']; /* 移除所有满足条件的元素,此为Dart的一种速写语法 numbersA.removeWhere((item) => item.length == 3); */ numbersA.removeWhere((item){ return item.length == 3; }); print(numbersA); List<String> numbersB = ['one', 'two', 'three', 'four']; /* 移除所有不满足条件的元素,此为Dart的一种速写语法 numbersB.retainWhere((item) => item.length == 3); */ numbersB.retainWhere((item){ return item.length == 3; }); print(numbersB);
按顺序迭代列表
List<String> names = ["Alice", "Daphne", "Elizabeth", "Joanna"]; names.forEach((name){ print(name); });
各种查询输出方法
List<String> names = ['Abbey', 'Fallon', 'Xenia', 'Callie', 'Callie']; // 列表中是否包含指定元素 print(names.contains('Fallon')); // 返回列表中的第几个元素 print(names.elementAt(2)); // 返回列表中第一个匹配元素的下标 print(names.indexOf('Callie')); // 返回列表中最后一个匹配元素的下标 print(names.lastIndexOf('Callie')); List<String> colors = ['red', 'green', 'blue', 'orange', 'pink']; // 返回从开始下标(包括)到结束下标(不包括)元素的列表 print(colors.sublist(1, 3)); // 返回从开始下标(包括)到最后一个元素的列表 print(colors.sublist(1));
对列表元素做一些改动
List<String> listA = ['a', 'b', 'c']; // 从第几个元素开始覆盖原列表 listA.setAll(1, ['bee', 'sea']); print(listA); List<int> listB = [1, 2, 3, 4, 5]; // 对列表进行随机排序 listB.shuffle(); print(listB); List<int> listC = [1, 2, 3, 4, 5]; // 对列表进行顺序排序 listC.sort(); print(listC);
映射(Map)
映射也就是键值对,每个键都有与之相关联的一个值
几种构造函数
Map()
Map<String, int> map = {"a":1, "b":2, "c":3}; print(map["a"]);
Map.fromIterable(Iterable iterable, {K key(element), V value(element)})
List<int> list = [1, 2, 3]; // 以下代码用到了速写语法,后面会详细讲解 Map<String, int> map = new Map.fromIterable(list, key: (item) => item.toString(), value: (item) => item * item); // 1 + 4 = 5 print(map['1'] + map['2']); // 9 - 4 = 5 print(map['3'] - map['2']);
Map.fromIterables(Iterable keys, Iterable values)
List<String> letters = ['b', 'c']; List<String> words = ['bad', 'cat']; Map<String, String> map = new Map.fromIterables(letters, words); // bad + cat = badcat print(map['b'] + map['c']);
所有属性
Map<String, int> map = {"a":1, "b":2, "c":3}; // 返回映射的哈希码 print(map.hashCode); // 映射上是否没有键值对 print(map.isEmpty); // 映射上是否有键值对 print(map.isNotEmpty); // 返回映射的所有键 print(map.keys); // 返回映射的所有值 print(map.values); // 返回映射上键值对的数目 print(map.length); // 返回对象运行时的类型 print(map.runtimeType);
常用方法
Map<String, int> map = {"a":1, "b":2, "c":3}; // 返回映射的字符串表示 print(map.toString()); // 按顺序迭代映射 map.forEach((key, value){ print(key + " : " + value.toString()); }); // 添加其他键值对到映射中 map.addAll({"d":4, "e":5}); // 映射是否包含指定键 print(map.containsKey("d")); // 映射是否包含指定值 print(map.containsValue(5)); // 删除指定键值对 map.remove("a"); // 删除所有键值对 map.clear(); Map<String, int> scores = {'Bob': 36}; for (var key in ['Bob', 'Rohan', 'Sophena']) { // 查找指定键,如果不存在就添加 scores.putIfAbsent(key, () => key.length); } print(scores['Bob']); print(scores['Rohan']); print(scores['Sophena']);
集(Set)
集的每个对象只能出现一次,不能重复
Set villains = new Set(); villains.add('Joker'); villains.addAll( ['Lex Luther', 'Voldemort'] ); print(villains);
所有属性
Set villains = new Set.from(['Joker', 'Lex Luther', 'Voldemort']); // 返回第一个元素 print(villains.first); // 返回最后一个元素 print(villains.last); // 返回元素的数量 print(villains.length); // 集只有一个元素就返回元素,否则异常 //print(villains.single); // 集是否没有元素 print(villains.isEmpty); // 集是否有元素 print(villains.isNotEmpty); // 返回集的哈希码 print(villains.hashCode); // 返回对象运行时的类型 print(villains.runtimeType); // 返回集的可迭代对象 print(villains.iterator);
常用方法
Set villains = new Set.from(["A", "B", "C"]); // 添加一个值 villains.add("D"); print(villains); // 添加一些值 villains.addAll(["E", "F"]); print(villains); // 以字符串输出集 print(villains.toString()); // 将集的值用指定字符连接,以字符串输出 print(villains.join(",")); // 集是否包含指定值 print(villains.contains("C")); // 集是否包含一些值 print(villains.containsAll(["E", "F"])); // 返回集的第几个值 print(villains.elementAt(1)); // 删除集的指定值,成功则返回true print(villains.remove("A")); // 删除集的一些值 villains.removeAll(["B", "C"]); // 删除集的所有值 villains.clear();
0 0
- Dart入门—集合类型
- Dart入门—基础类型与正则
- Dart入门—开发环境
- Dart入门—函数与运算符
- Dart入门—类与方法
- Dart入门—控制流程与其他
- Dart 语言入门——异步与并发编程
- Dart入门—库、泛型与异常
- Dart基础-变量与类型
- Groovy入门(二)——集合类型-Range
- Groovy入门(三)——集合类型List
- swift菜鸟入门视频教程-04-集合类型
- Redis快速入门之集合类型
- [入门-4] 基础类型之集合
- Dart基础学习02--变量及内置类型
- Redis学习笔记(六)——Redis常用命令入门——集合类型
- Redis学习笔记(七)——Redis常用命令入门——有序集合类型
- JAVA初入门——基本类型,类,构造函数,异常处理,IO,集合问题归纳
- Apple Pay市场再扩大: 全面登陆加拿大地区
- 20160511 GreenPlum7 分区表
- source insight 添加注释,添加环境变
- 图像基本变换---直方图
- 多重继承——菱形继承(二义性)
- Dart入门—集合类型
- socket编程的同步、异步与阻塞、非阻塞示例详解之二
- Android辅助工具01
- google分享审请AppID、AppSecret注意问题
- 图像基本变换---图像形态学算法(膨胀+腐蚀+开运算+闭运算)
- pgSQL substring(一):删除字段中除数字之外的字段
- EM算法 - 1 - 介绍
- GoLang之再谈Gvim/Vim配置——使用Vundle安装vim-go
- 单例模式 线程安全