Dart基础-集合类型

Dart基础-集合类型

1. 集合类型的定义

对于集合类型,Dart则内置了最常用的三种:List / Set / Map

其中,List可以这样来定义:

// List定义// 1.使用类型推断定义
var letters = ['a', 'b', 'c', 'd'];
print('$letters ${
      
      letters.runtimeType}');
// 2.明确指定类型
List<int> numbers = [1, 2, 3, 4];print('$numbers ${
      
      numbers.runtimeType}');

其中,set可以这样来定义:

  • 其实,也就是把[]换成{}就好了。
  • SetList最大的两个不同就是:Set是无序的,并且元素是不重复的。
// Set的定义
// 1.使用类型推导定义
var lettersSet = {
    
    'a', 'b', 'c', 'd'};
print('$lettersSet ${
      
      lettersSet.runtimeType}');
// 2.明确指定类型
Set<int> numbersSet = {
    
    1, 2, 3, 4};
print('$numbersSet ${
      
      numbersSet.runtimeType}');

最后,Map是我们常说的字典类型,它的定义是这样的:

// Map的定义
// 1.使用类型推导定义
var infoMap1 = {
    
    'name': 'why', 'age': 18};
print('$infoMap1 ${
      
      infoMap1.runtimeType}');

// 2.明确指定类型
Map<String, Object> infoMap2 = {
    
    'height': 1.88, 'address': '北京市'};
print('$infoMap2 ${
      
      infoMap2.runtimeType}');

2. 集合的常见操作

了解了这三个集合的定义方式之后,我们来看一些最基础的公共操作

第一类,是所有集合都支持的获取长度的属性length

// 获取集合的长度
print(letters.length);
print(lettersSet.length);
print(infoMap1.length);

第二类, 是添加/删除/包含操作

  • 并且,对List来说,由于元素是有序的,它还提供了一个删除指定索引位置上元素的方法
// 添加/删除/包含元素
numbers.add(5);
numbersSet.add(5);
print('$numbers $numbersSet');

numbers.remove(1);
numbersSet.remove(1);
print('$numbers $numbersSet');

print(numbers.contains(2));
print(numbersSet.contains(2));

// List根据index删除元素
numbers.removeAt(3);
print('$numbers');

第三类,是Map的操作

  • 由于它有key和value,因此无论是读取值,还是操作,都要明确是基于key的,还是基于value的,或者是基于key/value对的。
// Map的操作
// 1.根据key获取
valueprint(infoMap1['name']);

// 2.获取所有的entries
print('${
      
      infoMap1.entries} ${
      
      infoMap1.entries.runtimeType}');

// 3.获取所有的keys
print('${
      
      infoMap1.keys} ${
      
      infoMap1.keys.runtimeType}'); 

// 4.获取所有的values
print('${
      
      infoMap1.values} ${
      
      infoMap1.values.runtimeType}'); 

// 5.判断是否包含某个key或者value
print('${infoMap1.containsKey('age')} ${
      
      infoMap1.containsValue(18)}'); // true true


// 6.根据key删除元素
infoMap1.remove('age');print('${
      
      infoMap1}'); 

参考:

Coderwhy老师的公众号

猜你喜欢

转载自blog.csdn.net/MrLizuo/article/details/127669059
今日推荐