void listDemo() {
// 1.list的创建
listCreate();
// 2.多种类型的输出
listPrint();
// 3.添加数据
listAddElement();
// 4.删除数据
listRemoveElement();
// 5.更改列表元素
changeTheListElements();
// 按顺序迭代列表
List<String> names = ["Alice", "Daphne", "Elizabeth", "Joanna"];
names.forEach((name){
print(name);
});
}

1.List创建及属性

void listCreate() {
// 固定长度的列表,一旦定义就无法改变长度
List<int> fixedLengthList = List(5);
fixedLengthList[0] = 66;
print(fixedLengthList);
print(fixedLengthList[0]); // 可改变长度的列表,可以根据需要改变长度
List<int> growableList =[];
growableList.add(100);
growableList.length = 5;
growableList[4] = 100;
growableList[1] = 1;
print(growableList);
List growableListB = List(500);
print(growableListB.length);
List fa = [1,2,5];
// 不可变列表
List fb = List.unmodifiable(fa);
// fb[0] = 100;
// fb.removeLast();
print(fb);
// 可变列表
List fc = List.from(fa);
fc[0] = 100;
print(fc); // 创建一个长度为4值为1的列表,为所有元素统一赋值
List fd = List<int>.filled(4, 1);
print(fd);
List e = [14,20,3,4];
// 用生成器给所有元素赋初始值
List fe = List<int>.generate(4, (int index){ // 也是可变数组
print(index);
return e[index];
});
// 相关属性
print(fe);
print(fe.first);
print(fe.last);
print(fe.hashCode);
print(fe.isEmpty);
print(fe.isNotEmpty);
print(fe.iterator); // 返回一个新的迭代器 不知道有啥用
print(fe.reversed);
print(fe.removeLast());
print(fe);
print(fe.runtimeType);
fe.length = 1;
print(fe.single); // 列表是否是只有一个元素,否则报错
}

2.返回多种类型的输出

void listPrint(){
List growableList = List.from([1,2,3,4,5]);
// 返回列表的字符串表示
String string = growableList.toString();
print(string);
// 返回列表的集合表示
print(growableList.toSet());
// 返回字符串的列表表示
print(growableList.toList());
// 用指定字符连接列表元素
print(growableList.join(',')); print('---------分割线---------'); // 各种查询输出方法
List<String> names = ['Abbey', 'Fallon', 'Xenia', 'Callie', 'Callie'];
// 列表中是否包含指定元素
print(names.contains('Fallon'));
// 返回列表中的第几个元素
print(names.elementAt(2));
print(names[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));
}

3.添加元素

void listAddElement(){
List growableList = List();
// 增加一个元素到末尾
growableList.add(100);
// 增加一个元素到指定下标
int index = 0;
dynamic element = 20;
print(growableList.length);
growableList.insert(index, element);
print(growableList);
// 增加一个列表到列表末尾
List list = [20,3];
growableList.addAll(list);
print(growableList);
// 增加一个列表到指定位置
growableList.insertAll(index, list);
print(growableList);
}

4.删除元素

void listRemoveElement(){
List list = [1,2,3,4,3,4,5];
print(list);
// 删除列表中匹配的第一个元素
list.remove(3);
print(list);
// 移除列表中第几一个元素
list.removeAt(1);
print(list);
// 移除列表中最后一个元素
list.removeLast();
// 移除列表的所有元素
list.clear();
print(list);
List listA = [1,2,3,4,5];
// listA.replaceRange(start, end, replacement)
// 删除并替换开始下标(包括)至结束下标(不包括)内的元素
// /**Removes the objects in the range [start] inclusive to [end] exclusive and inserts the contents of [replacement] in its place.
// List<int> list = [1, 2, 3, 4, 5];
// list.replaceRange(1, 4, [6, 7]);
// list.join(', '); // '1, 6, 7, 5'
// The provide range, given by [start] and [end], must be valid. A range from [start] to [end] is valid if 0 <= start <= end <= len, where len is this list's length. The range starts at start and has length end - start. An empty range (with end == start) is valid. // This method does not work on fixed-length lists, even when [replacement] has the same number of elements as the replaced range. In that case use [setRange] instead *//
listA.replaceRange(1, 4, [6,'a',8]);
print(listA);
List listB = [1,2,3,4,5];
// listA.replaceRange(start, end, replacement)
// 删除并替换开始下标(包括)至结束下标(不包括)内的元素
listB.removeRange(1, 4);
print(listB);// [1,5]
List<String> numberA = ['one','two','trhee','four'];
// 从此列表中删除满足的所有对象。
numberA.removeWhere((item){
return item.length == 3;
});
print(numberA);
}

5.对列表元素做一些改动

void changeTheListElements() {
List<String> listA = ['a', 'b', 'c','d'];
// 从第几个元素开始覆盖原列表
/**List.setAll(int index, Iterable<String> iterable) → void
* 此操作不会增加此长度。
* [index]必须是非负数且不大于[length]。
* [iterable]的元素数量不能超过[index]到[length]的元素。
* 如果iterable基于此列表,则其值可能会在/ setAll期间/更改 */
listA.setAll(1, ['bee', 'sea']);
print(listA); List<int> listB = [1, 2, 3, 4, 5];
// 对列表进行随机排序
listB.shuffle();
print(listB); // 对列表进行顺序排序
/**
* List.sort([(int, int) → int compare]) → void
* 根据[compare]函数指定的顺序对此列表进行排序。
* [compare]函数必须充当[Comparator]。
*
*/ List<String> numbers = ['two','three', 'four'];
// Sort from shortest to longest.
numbers.sort((a, b) => a.length.compareTo(b.length));
print(numbers); // [two, four, three]
// The default List implementations use [Comparable.compare] if [compare] is omitted.
List<int> nums = [13, 2, -11];
nums.sort();
print(nums); // [-11, 2, 13]
}

链接:https://www.jianshu.com/p/29828eceb2fd

Flutter之List的更多相关文章

  1. Flutter 初尝:从 Java 无缝过渡

    准备阶段 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: git clone -b beta https://github.com/flutter/flut ...

  2. 编写第一个Flutter App(翻译)

    博客搬迁至http://blog.wangjiegulu.com RSS订阅:http://blog.wangjiegulu.com/feed.xml 以下代码 Github 地址:https://g ...

  3. 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?

    现在开发 App 的方式非常多,原生.ReactNative.Flutter 都是不错的选择.那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 He ...

  4. 我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线

    Hi,大家好,我是承香墨影! 距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS ...

  5. flutter初体验

    flutter初体验 和flutter斗争了两个周末,基本弄清楚了这个玩意的布局和一些常用组件了. 在flutter里面,所有东西都是组件Widget.我们像拼接积木一样拼接Widget,拼接的关键词 ...

  6. Flutter 实现原理及在马蜂窝的跨平台开发实践

    一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和 ...

  7. Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

    前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...

  8. Flutter 异常处理之图片篇

    背景 说到异常处理,你可能直接会认为不就是 try-catch 的事情,至于写一篇文章单独来说明吗? 如果你是这么想的,那么本篇说不定会给你惊喜哦~ 而且本篇聚焦在图片的异常处理. 场景 学以致用,有 ...

  9. Flutter 即学即用系列博客——07 RenderFlex overflowed 引发的思考

    背景 在进行 Flutter UI 开发的时候,控制台报出了下面错误: flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY >╞════════ ...

  10. Flutter的初体验--初次配置的问题

    首先参照官方文档进行搭建Mac下的环境 ,然后就会遇到以下问题:   1.在下载了Flutter 之后,执行Flutter doctor之后,报错: Could not resolve URL &qu ...

随机推荐

  1. C# 在PPT幻灯片中创建图表

    图表能够很直观的表现数据在某个时间段的变化趋势,或者呈现数据的整体和局部之间的相互关系,相较于大篇幅的文本数据,图表更增加了我们分析数据时选择的多样性,是我们挖掘数据背后潜在价值的一种更为有效地方式. ...

  2. java 线程方法 ---- join()

    class MyThread2 implements Runnable{ @Override public void run() { for (int i = 0; i < 5; i++){ S ...

  3. WLST

    Master Note on WebLogic Server Scripting Tool (WLST) Usage, Sample Scripts and Known Issues Deployin ...

  4. Python_实现json数据的jsonPath(精简版)定位及增删改操作

    基于python实现json数据的jsonPath(精简版)定位及增删改操作   by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 代码 #-*- encod ...

  5. java设计模式——适配器模式 Java源代码

    前言:适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作.通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一 ...

  6. UE3客户端加入DS过程

    拉起DS进程 客户端将比赛地图及相关参数发送给ZoneSvr请求开赛,收到消息后,ZoneSvr会分配一个ip和端口号,并与客户端发过来的地图及其他参数,来构建一个命令行来拉起一个DS进程, DS启动 ...

  7. 使用Python的列表推导式计算笛卡儿积

    笛卡儿积: 笛卡儿积是一个列表, 列表里的元素是由输入的可迭代类型的元素对构 成的元组,因此笛卡儿积列表的长度等于输入变量的长度的乘积, 如下图: 如果你需要一个列表,列表里是 3 种不同尺寸的 T ...

  8. Centos 7 安装 ifconfig 管理命令

    1. 安装的需求背景 我们知道ifconfig 命令可以用于查看.配置.启用或禁用指定网络接口,如配置网卡的IP地址.掩码.广播地址.网关等,功能不可谓不丰富. 此命令的功能和windows系统的ip ...

  9. 【原】Java学习笔记004 - 运算符

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 运算符:对常量 或 ...

  10. Linix基本命令

    基本命令关机:shutdown -h halt init 0 poweroff重启:shutdown -r reboot init 6pwd:查看工作目录ls:查看指定目录的内容-l:列表显示-a:显 ...