Flutter学习之路(七)-Dart 集合类型List Set Map详解

List里面常用的属性和方法:

常用属性:
    length          长度
    reversed        翻转
    isEmpty         是否为空
    isNotEmpty      是否不为空
常用方法:  
    add         增加
    addAll      拼接数组
    indexOf     查找  传入具体值
    remove      删除  传入具体值
    removeAt    删除  传入索引值
    fillRange   修改   
    insert(index,value);            指定位置插入    
    insertAll(index,list)           指定位置插入List
    toList()    其他类型转换成List  
    join()      List转换成字符串
    split()     字符串转化成List
    forEach   
    map
    where
    any
    every

两种定义方式:

List myList = ['香蕉','苹果','西瓜'];
print(myList[1]);

var list = new List();
print(list);

List里面的属性:

List myList = ['香蕉','苹果','西瓜'];
print(myList.length); // 3
print(myList.isEmpty); // false
print(myList.isNotEmpty); // true
print(myList.reversed);  // 对列表倒序排序,返回的不是一个数组: (西瓜,苹果,香蕉)
var newMyList = myList.reversed.toList(); // 使用toList()方法转成数组类型
print(newMyList);

List里面的方法:

List myList=['香蕉','苹果','西瓜'];

myList.add('桃子'); // 增加数据,只能增加一个

myList.addAll(['桃子','葡萄']); // 拼接数组

print(myList);

// indexOf 查找数据 查找不到返回-1  查找到返回索引值
print(myList.indexOf('苹x果')); 

myList.remove('西瓜'); // 移除指定元素

myList.removeAt(1); // 移除指定下标的元素

print(myList);


List myList = ['香蕉','苹果','西瓜'];

// 修改: start 起始下标, end 终止下标, value 替换后的值
myList.fillRange(1, 2,'aaa');  // ['香蕉','aaa','西瓜']  

myList.fillRange(1, 3,'aaa');  // ['香蕉','aaa','aaa']

// 插入  一个
myList.insert(1,'aaa'); // ['香蕉','aaa', '苹果','西瓜']

// 插入 多个
myList.insertAll(1, ['aaa','bbb']); // ['香蕉','aaa', 'bbb', '苹果','西瓜']

// List 转换成字符串, 参数为分隔符
var str = myList.join('-'); // '香蕉-苹果-西瓜'
print(str is String); // true

var str='香蕉-苹果-西瓜';
// 字符串转成 List, 
var list=str.split('-'); // ['香蕉','苹果','西瓜']
print(list is List); // true

Set 的常用属性和方法

用它最主要的功能就是 去除数组重复 内容。
注意: Set 是没有顺序且不能重复的集合,所以不能通过索引去获取值。

var s=new Set();
s.add('香蕉');
s.add('苹果');
s.add('苹果');

print(s);   // {香蕉, 苹果}
print(s.toList()); // [香蕉, 苹果]

用法:对数组去重

List myList = ['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s = new Set();
s.addAll(myList);
print(s); // {'香蕉','苹果','西瓜'}
print(s.toList()); // ['香蕉','苹果','西瓜']

还有一些其他属性和方法。

Map 的常用属性和方法

映射(Maps)是无序的键值对:

常用属性:
    keys            获取所有的key值
    values          获取所有的value值
    isEmpty         是否为空
    isNotEmpty      是否不为空
常用方法:
    remove(key)     删除指定key的数据
    addAll({...})   合并映射  给映射内增加属性
    containsValue   查看映射内的值  返回true/false
    forEach   
    map
    where
    any
    every

两种定义Map的方式:

Map person = {
	"name":"张三", // 键名必须使用引号
	"age":20
};

var m=new Map();
m["name"]="李四";
print(person); // // { name: 张三, age: 20 }
print(m); // { name: 李四 }

Map 的常用属性

Map person = {
	"name":"张三",
	"age":20,
	"sex":"男"
};
// 获取所有键名,使用 toList() 方法转成数组类型
print(person.keys.toList()); // [name, age, sex]

// 获取所有值,使用 toList() 方法转成数组类型
print(person.values.toList()); // [张三, 20, 男]

// 判断 Map 是否为空
print(person.isEmpty); // false
print(person.isNotEmpty); // true

Map 的常用方法

Map person={
	"name":"张三",
	"age":20,
	"sex":"男"
};

// 增加键值,只有一个 addAll() 方法
person.addAll({
	"work":['敲代码','送外卖'],
	"height":160
});
print(person); // {name: 张三, age: 20, sex: 男, work: [敲代码, 送外卖], height: 160}

// 删除某个键值,传入键名
person.remove("sex");
print(person);

// 是否有某个值
print(person.containsValue('张三')); // true

常用的循环方法 (通用)

    forEach     
    map         
    where       
    any
    every
List myList=['香蕉','苹果','西瓜'];

// 基本的 for 循环写法
for(var i = 0; i < myList.length; i++){
	print(myList[i]);
}

// for...in 用法
for(var item in myList){
	print(item);
}

// forEach 用法 - List 类型里只有一个参数 value
myList.forEach((value){
	print("$value");
});

List myList = [1,3,4];
List newList = new List();
for(var i = 0; i < myList.length; i++){
	newList.add(myList[i]*2);
}
print(newList);

// map 循环:返回的结果使用 toList() 可以变成一个新的数组
List myList = [1,3,4];      
var newList = myList.map((value){
	return value * 2;
});
print(newList.toList());

// where 循环:返回符合条件的数据,返回的结果使用 toList() 可以变成一个新的数组
List myList=[1,3,4,5,7,8,9];
var newList=myList.where((value){
	return value > 5;
});
print(newList.toList());

// any 循环:返回一个布尔值
List myList=[1,3,4,5,7,8,9];
var f=myList.any((value){ // 只要集合里面有满足条件的就返回 true
	return value > 5;
});
print(f);

// every 循环:返回一个布尔值
List myList=[1,3,4,5,7,8,9];
var f=myList.every((value){ // 每一个都满足条件返回true  否则返回false
	return value>5;
});
print(f);

// set 
var s = new Set();
s.addAll([1,222,333]);
s.forEach((value)=>print(value));

// map
Map person={
	"name":"张三",
	"age":20
};
person.forEach((key,value){            
	print("$key---$value");
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值