【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )

简介: 【Flutter】Dart 数据类型 List 集合类型 ( 定义集合 | 初始化 | 泛型用法 | 初始化后添加元素 | 集合生成函数 | 集合遍历 )

文章目录

I . 定义集合并初始化

II . 集合泛型用法

III . 集合添加元素

IV . 集合生成函数

V . 集合遍历

VI . 集合示例代码



I . 定义集合并初始化


定义并初始化 List 集合 : 定义集合 , 并对集合初始化 ;



① 集合元素数据类型 : 集合元素类型是泛型的 , 可以接受任何数据类型 ;


② 集合元素种类 : 如果没有指定泛型 , 集合中可以存放不同类型的元素 ,


③ 举例 : 在一个未指定泛型的集合中同时存放 int , double , String , bool 类型的元素 ;


④ List 集合初始化添加元素 : 使用 [] 初始化集合元素 ;



List list = [1, 1.0, '字符串' , true];
//使用 print 可以直接打印集合
//打印集合 list : [1, 1.0, 字符串, true]
print("打印集合 list : $list");




II . 集合泛型用法


集合泛型 :



① 指定泛型 : 如果集合声明时 , 指定了泛型 , 那么就只能存放该泛型类型的元素 ;


( 指定 int 泛型类型的集合 , 只能存放 int 类型的元素 )



② 赋值限制 : 泛型不同的 List 集合斌量之间不能相互赋值 ;



List<int> list_int = [1 , 2, 3];
//打印集合 list1 : [1, true]
print("打印集合 list_int : $list_int");




III . 集合添加元素


1 . 集合元素添加 : 集合除了在初始化时添加元素外 , 还可以调用集合的 add ( ) 和 addAll ( ) 添加元素 ;



2 . 添加单个元素 : 通过 add ( ) 方法 添加单个元素 ;


List list1 = [];
list1.add(1);
list1.add(true);
//打印集合 list1 : [1, true]
print("打印集合 list1 : $list1");



3 . 添加多个元素 : 通过 addAll ( ) 方法 添加多个元素 ;


List list = [1, 1.0, '字符串' , true];  
List list2 = [];
list2.addAll(list);
//打印集合 list2 : [1, 1.0, 字符串, true]
print("打印集合 list2 : $list2");



IV . 集合生成函数


1 . 集合生成函数 : 调用集合 List 的 generate ( ) 方法 , 可以调用生成函数生成根据需求产生的元素 ;



2 . generate ( ) 函数原型 :



① int length 参数 : List 集合元素个数 ;


② E generator(int index) 参数 : 生成元素的回调函数 , 其中 index 是元素索引值 ;


 

/**
   * Generates a list of values.
   *
   * Creates a list with [length] positions and fills it with values created by
   * calling [generator] for each index in the range `0` .. `length - 1`
   * in increasing order.
   *
   *     new List<int>.generate(3, (int index) => index * index); // [0, 1, 4]
   *
   * The created list is fixed-length unless [growable] is true.
   */
  factory List.generate(int length, E generator(int index),
      {bool growable = true}) {
    List<E> result;
    if (growable) {
      result = <E>[]..length = length;
    } else {
      result = List<E>(length);
    }
    for (int i = 0; i < length; i++) {
      result[i] = generator(i);
    }
    return result;
  }


3 . 代码示例 :


//集合的生成函数
//  int length 参数 : 集合的长度
//  E generator(int index) : 集合的回调函数 , 调用该函数获取集合的 index 位置的元素
List list_generate = List.generate(3, ( index ) => index * 3);
//打印集合 list_generate : [0, 3, 6]
print("打印集合 list_generate : $list_generate");




V . 集合遍历


1 . 通过 带循环条件的 普通 for 循环遍历 :


// 1 . 方式 1 : 通过下标访问集合
for(int i = 0; i < list_generate.length; i ++){
  print(list_generate[i]);
}



2 . 通过 var obj in list_generate 样式的 for 循环遍历 :


// 2 . 方式 2 : 通过 var obj in list_generate 获取集合中的元素
for( var obj in list_generate ){
  print(obj);
}



3 . 通过 For Each 循环遍历 :


// 3 . 方式 3 : For Each 循环
list_generate.forEach( ( element ){
  print(element);
} );



VI . 集合示例代码


1 . 示例代码 :



import 'package:flutter/material.dart';
class DartType_List extends StatefulWidget {
  @override
  _DartType_ListState createState() => _DartType_ListState();
}
class _DartType_ListState extends State<DartType_List> {
  @override
  Widget build(BuildContext context) {
    listDemo();
    return Container(child: Text('List 数据类型'));
  }
  /**
   * List 示例集合
   */
  listDemo(){



   // I . 定义集合



 

//定义集合 , 并对集合初始化
    //  集合元素数据类型 : 集合元素类型是泛型 , 可以接受任何数据类型
    //  集合元素种类 : 如果没有指定泛型 , 集合中可以存放不同类型的元素
    //      如在一个未指定泛型的集合中同时存放 int , double , String , bool 类型的元素
    //  初始化添加元素 : 使用 [] 初始化集合元素
    List list = [1, 1.0, '字符串' , true];
    //使用 print 可以直接打印集合
    //打印集合 list : [1, 1.0, 字符串, true]
    print("打印集合 list : $list");
    // II . 集合泛型用法
    //如果集合声明时 , 指定了泛型 , 那么就只能存放该泛型类型的元素
    //  如 : 指定 int 泛型类型的集合 , 只能存放 int 类型的元素
    //       泛型不同的 List 集合斌量之间不能相互赋值
    //       不能将上面的 list 集合赋值给 该 list_int
    List<int> list_int = [1 , 2, 3];
    //打印集合 list1 : [1, true]
    print("打印集合 list_int : $list_int");
    // III . 初始化后添加元素
    //集合除了在初始化时添加元素外
    //  还可以调用集合的 add ( ) 和 addAll ( ) 添加元素
    // 通过 add ( ) 方法 添加单个元素
    List list1 = [];
    list1.add(1);
    list1.add(true);
    //打印集合 list1 : [1, true]
    print("打印集合 list1 : $list1");
    // 通过 addAll ( ) 方法 添加多个元素
    List list2 = [];
    list2.addAll(list);
    //打印集合 list2 : [1, 1.0, 字符串, true]
    print("打印集合 list2 : $list2");
    // IV . 集合的生成函数
    //集合的生成函数
    //  int length 参数 : 集合的长度
    //  E generator(int index) : 集合的回调函数 , 调用该函数获取集合的 index 位置的元素
    List list_generate = List.generate(3, ( index ) => index * 3);
    //打印集合 list_generate : [0, 3, 6]
    print("打印集合 list_generate : $list_generate");
    // V . 集合遍历
    // 1 . 方式 1 : 通过下标访问集合
    for(int i = 0; i < list_generate.length; i ++){
      print(list_generate[i]);
    }
    // 2 . 方式 2 : 通过 var obj in list_generate 获取集合中的元素
    for( var obj in list_generate ){
      print(obj);
    }
    // 3 . 方式 3 : For Each 循环
    list_generate.forEach( ( element ){
      print(element);
    } );
  }
}



2 . 执行结果 :


打印集合 list : [1, 1.0, 字符串, true]
打印集合 list_int : [1, 2, 3]
打印集合 list1 : [1, true]
打印集合 list2 : [1, 1.0, 字符串, true]
打印集合 list_generate : [0, 3, 6]


目录
相关文章
|
2月前
|
开发框架 Dart 前端开发
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。
Flutter 是谷歌推出的一款高效跨平台移动应用开发框架,使用 Dart 语言,具备快速开发、跨平台支持、高性能、热重载及美观界面等特点。本文从 Flutter 简介、特点、开发环境搭建、应用架构、组件详解、路由管理、状态管理、与原生代码交互、性能优化、应用发布与部署及未来趋势等方面,全面解析 Flutter 技术,助你掌握这一前沿开发工具。
93 8
|
2月前
|
存储 消息中间件 NoSQL
Redis数据结构:List类型全面解析
Redis数据结构——List类型全面解析:存储多个有序的字符串,列表中每个字符串成为元素 Eelement,最多可以存储 2^32-1 个元素。可对列表两端插入(push)和弹出(pop)、获取指定范围的元素列表等,常见命令。 底层数据结构:3.2版本之前,底层采用**压缩链表ZipList**和**双向链表LinkedList**;3.2版本之后,底层数据结构为**快速链表QuickList** 列表是一种比较灵活的数据结构,可以充当栈、队列、阻塞队列,在实际开发中有很多应用场景。
|
2月前
|
Dart
flutter dart mixin 姿势
flutter dart mixin 姿势
|
2月前
|
Dart 开发者
flutter_鸿蒙next_Dart基础③函数
本文深入探讨了 Dart 编程语言中的函数概念,包括函数的基本定义、参数、返回值以及高级使用场景。通过 Flutter 和鸿蒙的实际案例,介绍了函数的定义、调用、可选参数、命名参数、匿名函数和高阶函数等内容,帮助读者更好地理解和应用 Dart 函数。
142 1
|
3月前
|
Dart 开发者 Windows
flutter:dart的学习
本文介绍了Dart语言的下载方法及基本使用,包括在Windows系统上和VSCode中的安装步骤,并展示了如何运行Dart代码。此外,还详细说明了Dart的基础语法、构造函数、泛型以及库的使用方法。文中通过示例代码解释了闭包、运算符等概念,并介绍了Dart的新特性如非空断言操作符和延迟初始化变量。最后,提供了添加第三方库依赖的方法。
44 12
|
3月前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
57 2
|
机器学习/深度学习 新零售 移动开发
细化 Flutter List 内存回收,解决大 Cell 问题
何谓大 Cell 问题?在基于 Native List 的渲染方案中,都会遇到大 Cell 问题。比如 Weex 业务中,经常出现页面内存飙高,排查后发现多为前端写法导致的一个大 Cell 中存在过多图片,导致内存过高。
2115 0
细化 Flutter List 内存回收,解决大 Cell 问题
|
5天前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
2天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
3月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin