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