Dart List 属性与方法的使用

几乎每种编程语言中最常见的集合可能是 array 或有序的对象集合。 在 Dart 中的 Array 就是 List 对象, 通常称之为 List

Dart 中的 List 字面量非常像 JavaScript 中的 array 字面量。 下面是一个 Dart List 的示例:

var list = [1, 2, 3];

声明 List

var list1 = List(); // 不限定长度,不限定类型
List list2 = List(); // 不限定长度,不限定类型
List list3 = List(2); // 限定长度,不限定类型

list1.add('a'); // 添加一个数据
list1.addAll([1, 2, 'hello']); // 添加一组数据
print(list1);

List 常用属性

名称说明
isEmpty是否为空
isNotEmpty是否不为空
first第一个
last最后一个
length个数
reversed返回一个List的倒序排列的Iterable 不改变原List
line([c = '-']) => print(c * 80);


main(){
  var list4 = [2, '3', true];
  list4[2] = 'false';
  List list_11 = [list4, 'aa', 'bb'];
  line('*');
  print('list_11.length: ${list_11.length}');
  print('list_11.isEmpty: ${list_11.isEmpty}');
  print('list_11.isNotEmpty: ${list_11.isNotEmpty}');
  print('list_11.reversed: ${list_11.reversed}');
  print('list_11.first: ${list_11.first}');
  print('list_11.last: ${list_11.last}');
}

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
********************************************************************************
list_11.length: 3
list_11.isEmpty: false
list_11.isNotEmpty: true
list_11.reversed: (bb, aa, [2, 3, false])
list_11.first: [2, 3, false]
list_11.last: bb

常用 List 方法列表

add() // 添加一个元素到 list 末尾

var list1 = []; // 创建一个空列表
list1.add('a');
list1.add('b');
list1.add('c');
list1.add(1);
list1.add(2);
list1.add(true);
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, 1, 2, true]

addALl() 将另一个 list 添加到当前 list 末尾

var list1 = ['a', 1, true];
var list2 = [12, 'b', false];
list1.addAll(list2);
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, 1, true, 12, b, false]

insert(index, element) 在指定位置插入一个元素

var list1 = ['a', 'b', 1, true];
list1.insert(0, false);
list1.insert(list1.length, 'hello');
print(list1);
print(list1.length);
zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[false, a, b, 1, true, hello]
6

insertAll(index, list) 在指定位置插入一个 list

var list1 = ['a', 1];
list1.insertAll(1, ['b', true]);
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, true, 1]

followedBy(list) 将当前 list 和 参数中的 list 合成一个 list,原list 不变

var list1 = ['a', 1];
var list2 = list1.followedBy(['b', 2]); // list2 是一个 iterable (可迭代对象)
var list3 = list2.toList(); // 将 Iterable (可迭代对象)转换成 List对象
print('list1: $list1'); // list1 没有变化
print('list2: $list2');
print('list2.runtimeType: ${list2.runtimeType}');
print('list3: $list3');
print('list3.runtimeType: ${list3.runtimeType}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [a, 1]
list2: (a, 1, b, 2)
list2.runtimeType: EfficientLengthFollowedByIterable<Object>
list3: [a, 1, b, 2]
list3.runtimeType: List<Object>

remove(obj) 删除具体元素 obj

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
list1.remove(true); // 删除值为 true 的第一个元素
print(list1);
list1.remove(2); // 删除值为 2 的第一个元素
print(list1);
list1.remove('b'); // 删除值为 'b' 的第一个元素
print(list1);
zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, false]
[a, b, c, b, c, 1, 2, 3, false]
[a, c, b, c, 1, 2, 3, false]

removeAt(index) 删除索引位置的元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.removeAt(0); // 删除索引 0 的元素
print(list1);
list1.removeAt(list1.length - 1); // 删除最后一个索引的元素
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[b, c, b, c, 1, 2, 2, 3, true, false]
[b, c, b, c, 1, 2, 2, 3, true]

removeLast() // 删除末尾元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
var tt = list1.removeLast(); // 删除最后一个元素, 并返回删除的元素
print('tt: $tt');
print(list1);
list1.removeLast();
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
tt: false
[a, b, c, b, c, 1, 2, 2, 3, true]
[a, b, c, b, c, 1, 2, 2, 3]

removeRange(start, end) 删除指定范围的元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.removeRange(1, 3); // 删除索引从1 到 3 的元素,不包含索引为 1 的元素 
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, b, c, 1, 2, 2, 3, true, false]

removeWhere() 根据条件删除

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
// 按条件删除,删除 满足条件的所有元素,删除列表中元素为 'b' 和 'c' 的所有元素
list1.removeWhere((item) => item == 'b' || item == 'c');
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, 1, 2, 2, 3, true, false]

clear() 清空 list

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.clear(); // 清空 list1
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[]

setRange(startIndex, endIndex, list) 范围修改 List

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.setRange(1, 4, ['aa', 'bb', 'cc']); // 指定范围设置替换
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, aa, bb, cc, c, 1, 2, 2, 3, true, false]

replaceRange(start, end, list) 范围替换,含头不含尾

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.replaceRange(1, 4, ['aa', 'bb', 'cc', 'dd', 'ff', 'gg']);
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, aa, bb, cc, dd, ff, gg, c, 1, 2, 2, 3, true, false]

fillRange(start, end, value) 把指定范围的元素替换为 value

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.fillRange(5, 9, 88); // 把所有索引5-9之间的元素都修改为 88
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, b, c, b, c, 88, 88, 88, 88, true, false]

retainWhere(()=>(bool)) 根据条件筛选保留元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.retainWhere((item) => item is String); // 保留 list 中类型为 String 的元素,删除其他类型
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, b, c, b, c]

setAll(index, list) 从 index 开始,使用 list 内的元素诸葛替换当前list 中的元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
list1.setAll(5, ['x', 'xx', 'xxx', 'xxxx']); // 从索引 5 开始用 参数中list替换
print(list1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
[a, b, c, b, c, x, xx, xxx, xxxx, true, false]

indexOf(element, [start]) 查找元素在当前list指定位置开始查找索引

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
print('1 的索引:${list1.indexOf(1)}');
print('b 的索引: ${list1.indexOf('b')}');
print('从第二个索引开始查找 b 的索引: ${list1.indexOf('b', 2)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
1 的索引:5
b 的索引: 1
从 第二个索引开始查找 b 的索引: 3

lastIndexOf(obj, index) 从后往前查找

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
print('元素 2 的索引:${list1.lastIndexOf(2)}'); // 从后往前开始搜索

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
元素 2 的索引:7

elementAt(index) 获取指定索引位置的元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print(list1);
print('索引 6 的元素: ${list1.elementAt(6)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false]
索引 6 的元素: 2

any((element) => (bool)) 判断 List 中是否有任意一个元素符合给定的参数

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
var list2 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false];
print('list1: $list1');
print('list2: $list2');
if (list1.any((item) => item is double)){
  print('list1 中存在 Double 类型的元素');
} else {
  print('list1 中不存在 Double 类型的元素');
}

if (list2.any((item) => item is double)){
  print('list2 中存在 Double 类型的元素');
} else {
  print('list2 中不存在 Double 类型的元素');
}

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [a, b, c, b, c, 1, 2, 2, 3, true, false, 3.3]
list2: [a, b, c, b, c, 1, 2, 2, 3, true, false]
list1 中存在 Double 类型的元素
list2 中不存在 Double 类型的元素

every((element) => (bool)) 判断 List 中是否每个元素都符合参数

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
var list2 = ['a', 'b', 'c', 'd'];
print('list1 中是否每个元素都是字符串: ${list1.every((item) => item is String)}');
print('list2 中是否每个元素都是字符串: ${list2.every((item) => item is String)}');
zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1 中是否每个元素都是字符串: false
list2 中是否每个元素都是字符串: true

contains(obj) List 中是否存在给定的 obj

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
print('2 是否存在 list1 中: ${list1.contains(2)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
2 是否存在 list1 中: true

firstWhere((element) => (bool)) 返回第一个满足条件的元素

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
print(list1.firstWhere((item) => item is int)); // 返回 list1 中第一个为 int 类型的元素

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
1

indexWhere((e) => (bool)) 返回第一个满足条件的元素的 index

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
print('第一个为 int 类型的索引: ${list1.indexWhere((item) => item is int)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
第一个为 int 类型的索引: 5

lastIndexWhere((e) => (bool)) 从后往前找,返回第一个满足条件的元素的索引

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
print('从后往前找第一个满足田间的索引: ${list1.lastIndexWhere((item) => item is String)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
从后往前找第一个满足田间的索引: 4

lastWhere((e) => (bool)) 从后往前找,返回第一个满足条件的元素的值

var list1 = ['a', 'b', 'c', 'b', 'c', 1, 2, 2, 3, true, false, 3.3];
print(list1);
print('从后往前找第一个类型为 bool 的元素: ${list1.lastWhere((item) => item is bool)}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, b, c, 1, 2, 2, 3, true, false, 3.3]
从后往前找第一个类型为 bool 的元素: false

forEach() List遍历每个元素

var list1 = [1, 2, 4, 7];
list1.forEach((item) => print(item));

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
1
2
4
7

map() 遍历现有List 的每个元素,返回一个新的Iterable (可遍历的对象)

var list1 = [1, 2, 3, 4, 5];
var list2 = list1.map((item) => item += 1);
print(list1);
print(list2);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[1, 2, 3, 4, 5]
(2, 3, 4, 5, 6)

fold(initValue, (preValue, element) =>()) 根据现有的List 和给定的initValue,指定一个参数函数规则,对每个元素做操作,并返回结果

var list1 = [1, 2, 3, 4, 5];
var v_1 = list1.fold(2, (pre, item) => pre * item); // 2*(1*2*3*4*5)
print('list1: $list1');
print('v_1: $v_1');
var v_2 = list1.fold(3, (pre, item) => pre + item * 2); // 3+(1*2+2*2+3*2+4*2+5*2)
print('v_2: $v_2');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5]
v_1: 240
v_2: 33

reduce((a,b) => (某种操作) 用指定的方法对元素做连续操作,将结果返回

var list1 = [1, 2, 3, 4, 5];
var v_1 = list1.reduce((a, b) => a*b);
print('list1: $list1');
print('v_1: $v_1');
var list2 = ['a', 'b', 'c', 'd'];
var v_2 = list2.reduce((a, b) => a+b);
print('list2: $list2');
print('v_2: $v_2');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5]
v_1: 120
list2: [a, b, c, d]
v_2: abcd

skip(count) 越过 count 个元素后,开始返回 list 的 iterabl

var list1 = [1, 2, 3, 4, 5];
var list2 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var v_1 = list1.skip(2);
print('list1: $list1');
print('v_1: ${v_1.toList()}');
var v_2 = list2.skip(2);
print('list2: $list2');
print('v_2: ${v_2.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5]
v_1: [3, 4, 5]
list2: [a, b, c, d, e, f, g]
v_2: [c, d, e, f, g]

skipWhile((e)=>(bool)) 根据参数函数,找到第一个不符合条件的元素然后将其及其后的元素返回

var list1 = [1, 2, 3, 4, 5, 6, 7, 8];
print('list1: $list1');
var v_1 = list1.skipWhile((item) => item <= 3);
print('v_1: ${v_1.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8]
v_1: [4, 5, 6, 7, 8]

take(count) 从 0 开始取 count 个元素并返回结果

var list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var v_1 = list1.take(5);
print('list1: $list1');
print('v_1: ${v_1.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
v_1: [1, 2, 3, 4, 5]

takeWhile((e)=>(bool)) 从 0 开始取,直至第一个不符合函数的元素,将其前面的元素都返回

var list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var v_1 = list1.takeWhile((item) => item <= 6);
print('list1: $list1');
print('v_1: ${v_1.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
v_1: [1, 2, 3, 4, 5, 6]

where((e)=>(bool)) 根据指定参数函数筛选每个元素,符合条件的元素组成一个新的Iterable

var list1 = [1, 2, 'a', 4, 5, 'b', 'c', 8, 9];
var v_1 = list1.where((item) => item is String);
var v_2 = list1.where((item) => item is int);
print('list1: $list1');
print('v_1: ${v_1.toList()}');
print('v_2: ${v_2.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, a, 4, 5, b, c, 8, 9]
v_1: [a, b, c]
v_2: [1, 2, 4, 5, 8, 9]

singleWhere((e)=>(bool)) 找到那唯一满足条件的元素

var list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var v_1 = list1.singleWhere((item) => item == 6);
print('list1: $list1');
print('v_1: ${v_1}');

输出:

$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
v_1: 6

whereType() // 从无指定泛型的List中,筛选出指定类型的数据

var list1 = ['a', 'b', 'c', 1, 3, 5, 7, true, false];
Iterable<String> str = list1.whereType();
Iterable<int> vi = list1.whereType();
Iterable<bool> bl = list1.whereType();
print('list1: $list1');
print('str: ${str.toList()}');
print('vi: ${vi.toList()}');
print('bl: ${bl.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [a, b, c, 1, 3, 5, 7, true, false]
str: [a, b, c]
vi: [1, 3, 5, 7]
bl: [true, false]

cast() 将 List 的泛型提升到其父祖类

var list = ['a', 'b', 'c', 'd'];
List<Object> v1 = list.cast();
print(v1);
print(v1.runtimeType);
v1.add('e');
print(v1);

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[a, b, c, d]
CastList<String, Object>
[a, b, c, d, e]

expand() 根据现有的 List,指定一个规则,生成一个新的List

var list1 = [1, 2, 3, 4, 5, 6, 7];
print(list1);
Iterable<int> v1 = list1.expand((item) => [(item +1), (item +2)]);
print(v1.toList());

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
[1, 2, 3, 4, 5, 6, 7]
[2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9]

toSet() 将 List 转为 Set 去除后面重复的元素

var list1 = [1, 2, 3, 3, 4, 5, 5, 6, 'a', 'b', 'a'];
var set_1 = list1.toSet();
print('list1: $list1');
print('set_1: $set_1');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 3, 4, 5, 5, 6, a, b, a]
set_1: {1, 2, 3, 4, 5, 6, a, b}

asMap() 将 list 转为 map

var list1 = ['a', 'b', 'c', 1, 2, 3];
var m_1 = list1.asMap();
print('list1: $list1');
print('m_1: $m_1');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [a, b, c, 1, 2, 3]
m_1: {0: a, 1: b, 2: c, 3: 1, 4: 2, 5: 3}

shuffle() List 内元素,重新随机排列

var list1 = [1, 'a', 2, 'b', true, 'c', 3];
print('list1: $list1');
list1.shuffle();
print('list1: $list1');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, a, 2, b, true, c, 3]
list1: [3, 1, b, a, c, 2, true]

sort() List 自身排序

var list1 = [1, 2, 3, 4, 5];
print('list1: $list1');
list1.sort((item1, item2) => item1 < item2 ? 1: -1);
print('list1: $list1');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5]
list1: [5, 4, 3, 2, 1]

sublist(start, [end]) 从指定 index 截取 list

var list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var list2 = list1.sublist(3, 6);
print('list1: $list1');
print('list2: $list2');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list2: [4, 5, 6]

getRange(start, end) 从 list 中截取 start-end 范围内的数据

var list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var list2 = list1.getRange(3, 8);
print('list1: $list1');
print('list2: ${list2.toList()}');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list2: [4, 5, 6, 7, 8]

join(‘-‘) 用指定的字符将 List 中每个元素都连接起来,返回一个字符串

var list1 = ['hello', 'world', '!', 1, 2, 3];
var hello = list1.join('-');
var world = list1.join('');
print('list1: $list1');
print('hello: $hello');
print('world: $world');

输出:

zsf90@DESKTOP-N95R1I7 MINGW64 /d/code/dart_prj/hello
$ dart v_list.dart
list1: [hello, world, !, 1, 2, 3]
hello: hello-world-!-1-2-3
world: helloworld!123

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注