美文网首页
Dart(4)list , set 和 map

Dart(4)list , set 和 map

作者: 谜夨_ | 来源:发表于2019-12-31 16:37 被阅读0次

list

//固定长度
var list1 = List(3);
//var list1 = new list();

//不定长度
var list2 = List();
//var list2 = new list();

/*在Dart2.2 以上 new 这个关键词可以被省略,并且他们推荐你这么做。*/

// 元素类型固定
var typeStringList = List<String>(); // 只能添加字符串类型的元素
typeStringList .add("hello world"); // 正确
//typeStringList .add(1); // 错误。类型不正确

//直接初始化
var list3 = [1,2,3];//此种情况下 确定为数值类型 int
//list3.add("hello world");//错误
var list4 = [1,"2", true];//不确定类型
list4 .add(1.2); // 正确

// 遍历一
list4.forEach((item){ //匿名
    print(item);
});

//遍历二
list4.forEach(showItem);

void showItem(var item){
   print(item);
}

//遍历三
for (var i = 0; i < list4.length; i++) {
    print(list4[i]);
}

//遍历四
for(var item in list4) { 
     print(item); 
}

List 常用的命令 剩下的自己查API

命令 说明
first 返回第一个元素
isEmpty 如果集合没有元素,则返回true
isNotEmpty 和楼上反着来
length 返回列表的大小(元素数量)
last 返回列表中的最后一个元素
reversed 以相反的顺序返回包含列表值的可迭代对象
single 检查列表是否只有一个元素并返回它。
add 加一个
addAll 加一群
insert 指定位置加一个
insertAll 指定位置加一群
remove 删除一个元素
removeAt 删除一直指定位置的元素
removeLast 删除最后一个
removeRange 删除一个范围
replaceRange 更新一个范围内的数值
clear 清空
//成为常量
var constList = const [1, 2, 3];
// constList [1] = 1; // 错误

set

Set 是一个元素唯一的无序队列
创建一个set

var names = set()
var names = <String>{};
// Set<String> names = {}; // 这样也是可以的。
// var names = {}; // 这样会创建一个 Map ,而不是 Set 。

//举例 runtimeType获取运行时候的类型
  var set1 = {};
  print(set1.runtimeType);  //JsLinkedHashMap<dynamic, dynamic>
  var set2 = <Object>{};
  print(set2.runtimeType); //_LinkedHashSet<Object>

'set' 常用的命令 这里只列 和上面不同的几个

命令 说明
contains 查询单个
containsAll 查询多个
firstWhere 按条件正向查询
lastWhere 按条件反向查询
removeWhere 按条件删除
retainAll 只保留几个
retainWhere 按条件只保留几个
//常量
final constSet = const {
  'fluorine',
  'chlorine',
  'bromine',
  'iodine',
  'astatine',
};
// constSet.add('helium'); // 错误

map

//创建一个map
var testMap = Map();
var testMap2 = {};
var testMap3 = {"a": "this is a",  "b": "this is b"};

//map也可以不指定泛型
var map1 = {'aa':'aaa','bb':22,'cc':true}
var map2 = Map();//new 关键字被省略了
map2['1']=1.1;
map2[2] = '22';

//map指定泛型
var map3= <String,String>{};
Map<int,String> map4 = Map();
map4[1] = "a";//新增1个 key value 也可修改1个 key value
map4[2] = "b";
Map<String,int> map5 = {"a":1,"b":2};

update关键字 修改 某个
updateAll 根据条件修改

Map<String,int> mapValues = {"a":1,"b":2};
int result3 = mapValues.update("a", (value)=>(value*2));//key存在  根据参数函数修改其值
print(result3);//2
int result4 = mapValues.update("d", (value)=>(value*2),ifAbsent: ()=>(10));
//key不存在  但有ifAbsent参数 返回ifAbsent函数的值  并添加到map中
print(result4);//10

Map<String,int> map4 = {"a":1,"b":2,"c":3};
map4.updateAll((String key,int value){
      return value*2;
});
print(map4);//{a: 2, b: 4, c: 6}
命令 说明
remove 删除1个
removeWhere 删除按照条件
containsKey 是否包含key
containsValue 是否包含value值
clear 清空map
addAll 整体合并另一个map 泛型要一致,后者覆盖前者
addEntries 合并两个map 如果key有重复,被合并的map的value覆盖前者
putIfAbsent 存在key就获取值,不存在则添加到map 然后返回值
cast 泛型类型提升为其父祖类

相关文章

网友评论

      本文标题:Dart(4)list , set 和 map

      本文链接:https://www.haomeiwen.com/subject/stjxoctx.html