【Flutter 开发实战】Dart 基础篇:List 详解

这篇具有很好参考价值的文章主要介绍了【Flutter 开发实战】Dart 基础篇:List 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Flutter 开发实战】Dart 基础篇:List 详解,Flutter 开发实战,list,数据结构,spring,数据库,oracle,java,git

嗨,各位朋友们,欢迎来到这篇博客!今天我们将一起踏入 Dart 语言的神奇世界,深入了解 Dart 中的 List 类型。不用担心,我会尽可能用最通俗易懂的语言,让你对 List 有一个更深刻的理解。

Dart 中的 List

List - 让数据变得有趣!

在 Dart 语言中,List 就像一个神奇的盒子,可以放进去各种各样的东西,比如数字、文字,甚至是其他盒子(List)!今天,我们就来揭开 List 的神秘面纱,看看它是如何让数据变得有趣的。

【Flutter 开发实战】Dart 基础篇:List 详解,Flutter 开发实战,list,数据结构,spring,数据库,oracle,java,git

// 创建一个充满数字的盒子
List<int> numbers = [1, 2, 3, 4, 5];

// 创建一个装满水果的盒子
List<String> fruits = ['apple', 'banana', 'orange'];

咦,看起来好像挺简单的吧?方括号里面放东西,逗号分隔,就是一个 List 了!

List 的小魔法

获取盒子的长度
List<int> numbers = [1, 2, 3, 4, 5];
int length = numbers.length;

print('盒子里有多少东西呢?答案是:$length 个!'); // 输出:盒子里有多少东西呢?答案是:5 个!

嘿,这个 length 就像是盒子的秘密标签,告诉你里面到底有多少东西。

拿出盒子里的东西
List<String> fruits = ['apple', 'banana', 'orange'];
String firstFruit = fruits[0];

print('盒子里的第一样东西是什么呢?是:$firstFruit'); // 输出:盒子里的第一样东西是什么呢?是:apple

哎呀,索引就像是盒子的小抽屉,从 0 开始,想拿出哪个就说出它的位置,比如 fruits[0] 就是拿出第一个水果。

往盒子里加新东西
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.add('grape');

print('往盒子里加了一颗葡萄,现在是这样的:$fruits'); // 输出:往盒子里加了一颗葡萄,现在是这样的:[apple, banana, orange, grape]

fruits 盒子里原本有 apple、banana、orange,来了一颗新水果 grape,用 add 方法就能轻松加入盒子。

从盒子里拿掉东西
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.remove('banana');

print('把香蕉拿出去了,盒子里现在是这样的:$fruits'); // 输出:把香蕉拿出去了,盒子里现在是这样的:[apple, orange]

remove 方法,就像把盒子里的东西拿出来一样,轻松又方便。

盒子漫游之遍历

遍历就像是打开盒子,逐个看看里面有什么,这可是盒子漫游的时刻!

for 循环遍历
List<int> numbers = [1, 2, 3, 4, 5];
for (int number in numbers) {
  print('这个数字是啥呢?是:$number');
}

for 循环,一个个数字出来亮相,好像数字们在做小秀一样。

forEach 方法遍历
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
  print('这个水果是啥呢?是:$fruit');
});

forEach 方法更简单,像是盒子里的每个东西都过来和你打招呼,一点都不会掉队。

不得不说,List 可真是个有趣的小伙伴,让我们的数据变得生动起来!

List 的小秘密

在 Dart 的舞台上,List 扮演着一个神奇的角色,但在使用它的过程中,可能会遇到一些小问题。让我们一一解决这些谜题吧!

如何判断 List 是否为空?
List<String> fruits = [];
if (fruits.isEmpty) {
  print('哎呀,水果盒子空空如也!');
} else {
  print('水果盒子里有${fruits.length}种水果哦!');
}

通过 isEmpty 属性,我们可以轻松地判断 List 是否为空,就像翻开水果盒子看看里面有没有惊喜。

如何查找 List 中的最大值和最小值?
List<int> numbers = [10, 5, 8, 15, 3];
int maxNumber = numbers.reduce((value, element) => value > element ? value : element);
int minNumber = numbers.reduce((value, element) => value < element ? value : element);

print('最大值是:$maxNumber,最小值是:$minNumber');

通过使用 reduce 方法,我们可以像找宝藏一样,找到 List 中的最大值和最小值。

List 的进阶冒险

现在,让我们进入一些高级的 List 冒险,让你的 Dart 旅程更加丰富多彩。

使用 map 转换 List 中的元素
List<int> numbers = [1, 2, 3, 4, 5];
List<int> squaredNumbers = numbers.map((number) => number * number).toList();

print('原始数字列表:$numbers');
print('每个数字的平方列表:$squaredNumbers');

map 方法就像是 List 的魔法师,可以将每个元素进行转换,创造出一个全新的 List。

使用 where 过滤 List 中的元素
List<int> numbers = [1, 2, 3, 4, 5];
List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();

print('原始数字列表:$numbers');
print('偶数列表:$evenNumbers');

where 方法就像是一位聪明的导游,可以根据你的喜好,为你筛选出特定的元素。

使用 sort 对 List 进行排序
List<int> numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
numbers.sort();

print('排序后的数字列表:$numbers');

sort 方法就像是整理房间,可以按照顺序排列,让一切井然有序。

使用 contains 判断 List 是否包含某个元素
List<String> fruits = ['apple', 'banana', 'orange'];
bool containsBanana = fruits.contains('banana');

if (containsBanana) {
  print('水果盒子里有香蕉哦!');
} else {
  print('水果盒子里没有香蕉。');
}

contains 方法就像是查找宝藏的探险者,可以告诉你是否在 List 中找到了特定的元素。

List 的奇妙嵌套

在 Dart 的舞台上,List 可以变得更加神奇,通过嵌套,你可以创建更复杂的数据结构。

【Flutter 开发实战】Dart 基础篇:List 详解,Flutter 开发实战,list,数据结构,spring,数据库,oracle,java,git

List<List<int>> matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9],
];

print('矩阵的第二行:${matrix[1]}');

这就像是在盒子里装盒子,通过嵌套,我们可以创建出更有趣的数据结构。

使用 List 的小心事项

在使用 List 的冒险中,一些小心事项也需要我们注意。

List 是可变的

在 Dart 中,List 是一位非常随和的小伙伴,你可以随时添加、删除或修改其中的元素。但别忘了,有时候要小心,避免意外发生。

List<int> numbers = [1, 2, 3, 4, 5];
numbers[0] = 10;

print('修改后的数字列表:$numbers');

通过索引,我们可以直接修改 List 中的元素值,就像给小伙伴们换了新衣服一样。

避免空指针异常

在冒险的过程中,千万要确保不要走进“越界”的陷阱,以免出现空指针异常。

List<String> fruits = ['apple', 'banana', 'orange'];

if (fruits.length > 2) {
  print('第三个水果是:${fruits[2]}');
} else {
  print('水果盒子里没有第三个水果。');
}

在这个例子中,我们先判断盒子的大小,再去取第三个元素,确保一切安全。

Dart 中 List 的其他花样

除了上面的操作,List 在 Dart 中还有更多花样,比如在函数中传递多个参数、实现队列和栈等。

使用 List 传递多个参数
void printNumbers(List<int> numbers) {
  for (int number in numbers) {
    print(number);
  }
}

printNumbers([1, 2, 3, 4, 5]);

通过将参数声明为 List 类型,我们可以方便地一次传递多个值给函数,就像给朋友送上一箱好吃的糖果。

实现队列和栈
// 队列(先进先出)
Queue<int> queue = Queue();
queue.addAll([1, 2, 3, 4, 5]);

int firstElement = queue.removeFirst();
print('队列的第一个元素是:$firstElement');

// 栈(后进先出)
List<int> stack = [];
stack.addAll([1, 2, 3, 4, 5]);

int lastElement = stack.removeLast();
print('栈的最后一个元素是:$lastElement');

通过使用 Dart 中的 Queue 类和 List 的 removeFirstremoveLast 方法,我们可以模拟队列和栈的玩法,就像在玩游戏一样。

在 Dart 的大舞台上,List 是个多才多艺的演员,有了这些花样,你就能更自如地编写出丰富多彩的代码了!

List 魔法手册

在 Dart 的大舞台上,List 扮演着一个强大而灵活的角色。上面的部分我们介绍了 Dart 中 List 的常见用法,但在 Dart 中还有其它的一些属性和用法,接下来,就让我们一起来总结 List 的一些神奇属性和方法吧!

List 常用属性:

属性 描述
length 获取 List 的长度
reversed 翻转 List 中的元素
isEmpty 判断 List 是否为空
isNotEmpty 判断 List 是否不为空
1. length - 长度

length 属性用于获取 List 的长度,即 List 中元素的个数。

List<int> numbers = [1, 2, 3, 4, 5];
int length = numbers.length;

print('List 的长度是:$length'); // 输出:List 的长度是:5

这个属性非常简单,但在很多场景中都是必不可少的。

2. reversed - 翻转

reversed 属性用于将 List 中的元素翻转。

List<int> numbers = [1, 2, 3, 4, 5];
List<int> reversedNumbers = numbers.reversed.toList();

print('翻转后的数字列表:$reversedNumbers');

这样我们就能得到一个反向排列的 List。

3. isEmpty - 是否为空

isEmpty 属性用于判断 List 是否为空,返回一个布尔值。

List<String> fruits = [];
if (fruits.isEmpty) {
  print('水果列表为空!');
} else {
  print('水果列表不为空,有${fruits.length}种水果。');
}

这是一个常见的判断,以避免在空列表上执行不必要的操作。

4. isNotEmpty - 是否不为空

相应地,isNotEmpty 属性则判断 List 是否不为空,也返回一个布尔值。

List<String> fruits = ['apple', 'banana', 'orange'];
if (fruits.isNotEmpty) {
  print('水果列表不为空,有${fruits.length}种水果。');
} else {
  print('水果列表为空!');
}

这两个属性在条件判断中经常被用到。

List 常用方法:

方法 描述
add 向 List 的末尾添加一个元素
addAll 将一个 List 中的所有元素添加到另一个 List 的末尾
indexOf 查找 List 中某个特定值的索引,如果未找到则返回 -1
remove 删除 List 中指定值的第一个匹配项
removeAt 删除 List 中指定索引位置的元素
fillRange 修改 List 中一定范围内的元素值
insert 在 List 的指定位置插入一个元素
insertAll 在 List 的指定位置插入另一个 List 中的所有元素
toList 将其他类型的集合转换为 List
join 将 List 中的元素连接成一个字符串,可以指定连接符
split 将一个字符串按照指定的分隔符拆分成 List
forEach 遍历 List 中的每个元素,对每个元素执行指定的操作
map 对 List 中的每个元素执行指定的操作,并返回一个新的 List
where 根据指定的条件过滤 List 中的元素,返回一个新的 List
any 检查 List 中是否至少有一个元素满足指定的条件,返回一个布尔值
every 检查 List 中是否所有元素都满足指定的条件,返回一个布尔值
1. add - 增加

add 方法用于向 List 的末尾添加一个元素。

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.add('grape');

print('添加葡萄后的水果列表:$fruits');

这是一个简单而常见的操作,用于动态地向 List 中添加元素。

2. addAll - 拼接数组

addAll 方法用于将一个 List 中的所有元素添加到另一个 List 的末尾。

List<int> numbers1 = [1, 2, 3];
List<int> numbers2 = [4, 5, 6];
numbers1.addAll(numbers2);

print('拼接后的数字列表:$numbers1');

这是一个很方便的方法,可以将两个 List 合并成一个。

3. indexOf - 查找

indexOf 方法用于查找 List 中某个特定值的索引,如果未找到则返回 -1。

List<String> fruits = ['apple', 'banana', 'orange'];
int indexOfBanana = fruits.indexOf('banana');

print('香蕉的索引是:$indexOfBanana'); // 输出:香蕉的索引是:1

通过这个方法,我们可以迅速找到某个元素在 List 中的位置。

4. remove - 删除

remove 方法用于删除 List 中指定值的第一个匹配项。

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.remove('banana');

print('去掉香蕉后的水果列表:$fruits');

使用这个方法可以轻松地从 List 中移除指定的元素。

5. removeAt - 删除

removeAt 方法用于删除 List 中指定索引位置的元素。

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.removeAt(1);

print('去掉索引为1的水果后的水果列表:$fruits');

这个方法对于根据索引值删除元素非常有用。

6. fillRange - 修改

fillRange 方法用于修改 List 中一定范围内的元素值。

List<int> numbers = [1, 2, 3, 4, 5];
numbers.fillRange(1, 3, 10);

print('修改范围后的数字列表:$numbers');

这个方法让我们可以在 List 中指定范围内进行批量修改。

7. insert - 指定位置插入

insert 方法用于在 List 的指定位置插入一个元素。

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.insert(1, 'grape');

print('在索引1处插入葡萄后的水果列表:$fruits');

通过这个方法,我们可以灵活地在 List 中的任意位置插入元素。

8. insertAll - 指定位置插入 List

insertAll 方法用于在 List 的指定位置插入另一个 List 中的所有元素。

List<String> fruits = ['apple', 'banana', 'orange'];
fruits.insertAll(1, ['grape', 'kiwi']);

print('在索引1处插入葡萄和猕猴桃后的水果列表:$fruits');

这个方法对于批量插入元素非常方便。

9. toList - 其他类型转换成 List

toList 方法用于将其他类型的集合(如 Set)转换为 List。

Set<int> uniqueNumbers = {1, 2, 3, 4, 5};
List<int> numbersList = uniqueNumbers.toList();

print('Set 转换成 List 后的数字列表:$numbersList');

这个方法对于在不同集合类型之间进行转换很有用。

10. join - List 转换成字符串

join 方法用于将 List 中的元素连接成一个字符串,可以指定连接符。

List<String> fruits = ['apple', 'banana', 'orange'];
String fruitString = fruits.join(', ');

print('水果列表转换成字符串:$fruitString');

通过这个方法,我们可以方便地将 List 转换为可读性更好的字符串。

11. split - 字符串转化成 List

split 方法用于将一个字符串按照指定的分隔符拆分成 List。

String fruitsString = 'apple,banana,orange';
List<String> fruitsList = fruitsString.split(',');

print('字符串转换成水果列表:$fruitsList');

这个方法在处理从文件或网络获取的逗号分隔的数据时非常实用。

12. forEach

forEach 方法用于遍历 List 中的每个元素,对每个元素执行指定的操作。

List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEach((number) {
  print('当前数字是:$number');
});

这是一种简洁的方式来遍历 List。

13. map

map 方法用于对 List 中的每个元素执行指定的操作,并返回一个新的 List。

List<int> numbers = [1, 2, 3, 4, 5];
List<int> squaredNumbers = numbers.map((number) => number * number).toList();

print('原始数字列表:$numbers');
print('每个数字的平方列表:$squaredNumbers');

通过这个方法,我们可以方便地对 List 进行转换。

14. where

where 方法用于根据指定的条件过滤 List 中的元素,返回一个新的 List。

List<int> numbers = [1, 2, 3, 4, 5];
List<int> evenNumbers = numbers.where((number) => number % 2 == 0).toList();

print('原始数字列表:$numbers');
print('偶数列表:$evenNumbers');

这是一种强大的方法,可以根据需要筛选 List 中的元素。

15. any

any 方法用于检查 List 中是否至少有一个元素满足指定的条件,返回一个布尔值。

List<int> numbers = [1, 2, 3, 4, 5];
bool hasEvenNumber = numbers.any((number) => number % 2 == 0);

if (hasEvenNumber) {
  print('列表中有偶数。');
} else {
  print('列表中没有偶数。');
}

这个方法对于检查是否存在符合条件的元素很有用。

16. every

every 方法用于检查 List 中是否所有元素都满足指定的条件,返回一个布尔值。

List<int> numbers = [2, 4, 6, 8, 10];
bool allEvenNumbers = numbers.every((number) => number % 2 == 0);

if (allEvenNumbers) {
  print('列表中所有数字都是偶数。');
} else {
  print('列表中至少有一个不是偶数。');
}

这个方法对于检查是否所有元素都满足条件很有用。

结语

通过这篇博客,我们深入探讨了 Dart 中 List 的方方面面。从基本操作到高级应用,希望你现在对 Dart 中的 List 有了更清晰的认识。

  • 我们学习了如何创建、访问和操作 List。
  • 了解了如何遍历 List,并解决了一些常见问题。
  • 探讨了一些高级操作,包括转换、过滤和排序。
  • 知道了 List 可以嵌套,用于处理更复杂的数据结构。
  • 注意了在使用 List 时的一些小细节,避免了一些常见错误。

希望通过这篇博客,你对 Dart 中的 List 有了更深入的理解。在你的 Dart 之旅中,List 将是一个非常有力的工具,帮助你处理各种数据。加油,各位朋友们,愿你们在 Dart 的世界中越走越远!文章来源地址https://www.toymoban.com/news/detail-810309.html

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

到了这里,关于【Flutter 开发实战】Dart 基础篇:List 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构基础:P3-树(上)----编程作业02:List Leaves

    本系列文章为浙江大学陈越、何钦铭数据结构学习笔记,系列文章链接如下 : 数据结构(陈越、何钦铭)学习笔记 题目描述: 给定一棵树,按照从上到下、从左到右的顺序列出所有叶结点。 输入格式: 每个输入文件包含一个测试用例。对于每种情况,第一行给出一个正整数

    2024年02月11日
    浏览(62)
  • 第一百二十五回 dart中List和Map的常见用法

    我们在上一章回中介绍了Flexible组件相关的内容,本章回中将介绍 dart中的List和Map .闲话休提,让我们一起Talk Flutter吧。 我们在这里介绍的List也叫列表,它表示一组相同类型变量的集合。map也叫映射或者字典,它表示键值对的组合。在高级语言中都有list和map,比如Java,Swift以及

    2024年02月10日
    浏览(38)
  • SOP/详解*和**/python数据结构(iter,list,tuple,dict)/ 解包

    1 . ==== combined_seq.named_children() 2 . isinstance 2th parameter : must be a type or tuple of types ==== 改为tuple,不要用列表。改为 LLLayer = (nn.Conv2d,nn.Linear) 3 . File “test.py”, line 90, in calculate_fin_fout print(“hi”, seq[k].weight.shape[0], layers_fin_fout[“fout”][module]) KeyError: ScaledNeuron( (neuron): IFNode( v_thres

    2024年02月14日
    浏览(41)
  • 【Java 基础篇】Java List 详解

    在Java的集合框架中, List 接口是一个有序、可重复的集合,它扩展了 Collection 接口,并提供了一系列操作和方法来处理元素列表。本文将详细介绍Java中的 List 接口及其常见实现类,包括 ArrayList 、 LinkedList 和 Vector ,并提供一些示例代码。 List 接口继承自 Collection 接口,并添

    2024年02月11日
    浏览(33)
  • OpenHarmony实战开发-List组件的使用之设置项

    在本篇CodeLab中,我们将使用List组件、Toggle组件以及Router接口,实现一个简单的设置页,点击将跳转到对应的详细设置页面。效果图如下: @CustomDialog:@CustomDialog装饰器用于装饰自定义弹窗。 List:List是常用的滚动类容器组件之一,它按照水平或者竖直方向线性排列子组件,

    2024年04月14日
    浏览(60)
  • 鸿蒙开发实战-(ArkUI)List组件和Grid组件的使用

    在我们常用的手机应用中,经常会见到一些数据列表,如设置页面、通讯录、商品列表等。下图中两个页面都包含列表,“首页”页面中包含两个网格布局,“商城”页面中包含一个商品列表。 上图中的列表中都包含一系列相同宽度的列表项,连续、多行呈现同类数据,例如

    2024年01月22日
    浏览(48)
  • OpenHarmony开发实战:List组件的使用之商品列表(ArkTS)

    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学

    2024年04月27日
    浏览(72)
  • OpenHarmony实战开发-Grid和List内拖拽交换子组件位置。

    本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。 使用说明: 拖拽Grid中子组件,到目标Grid子组件位置,进行两者位置互换。 拖拽List中子组件,到目标List子组件位置,进行两者位置互换。 1.在Grid组件中,通过editMode()打开编辑模式、通过

    2024年04月17日
    浏览(29)
  • Flutter系列文章-Flutter环境搭建和Dart基础

    Flutter是Google推出的一个开源的、高性能的移动应用开发框架,可以用一套代码库开发Android和iOS应用。Dart则是Flutter所使用的编程语言。让我们来看看如何搭建Flutter开发环境,并了解Dart语言的基础知识。 1. 安装Flutter SDK 首先,访问Flutter官网下载Flutter SDK。选择适合你操作系统

    2024年02月15日
    浏览(46)
  • HarmonyOS鸿蒙应用开发( 四、重磅组件List列表组件使用详解)

    List列表组件,是一个非常常用的组件。可以说在一个应用中,它的身影无处不在。它包含一系列相同宽度的列表项,适合连续、多行呈现同类数据,如商品列表、图片列表和和文本列表等。ArkUI 框架采用 List 容器组件创建列表(类似 Android 的 RecycleView、Compose 的 LazyColumn)。

    2024年01月24日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包