没有人比我更会使用集合!对, 是dart中的集合

简介: 没有人比我更会使用集合!对, 是dart中的集合

目录



简介


dart中的集合有三个,分别是list,set和map。dart在dart:core包中提供了对于这三种集合非常有用的方法,一起来看看吧。


List的使用


首先是list的创建,可以创建空的list或者带值的list:


var emptyList =[];
var nameList = ['jack','mac'];


使用List的构造函数来创建:


var nameList = List.filled(2, 'max');


向list中添加元素或者list:


nameList.add('tony');
nameList.addAll(['lili', 'bruce']);


删除元素:


nameList.removeAt(0);
nameList.clear();


dart提供了list的排序方法sort(),sort可以接一个比较的函数,用来表示谁在前谁在后:


var names = ['jack', 'tony', 'max'];
fruits.sort((a, b) => a.compareTo(b));


list中还可以使用泛型,表示list中固定的类型:


var names = <String>[];
names.add('jack');


Set的使用


Set表示的是不重复的元素的集合。但是set和list不同的是set是无序的,所以你不能用index来定位set中的元素。


来看下set的基本用法:


//创建一个空的set
var names = <String>{};
// 添加新的元素
names.addAll(['jack', 'tony', 'max']);
//删除元素
names.remove('jack');


或者使用Set的构造函数来构造Set:


var names = Set.from(['jack', 'tony', 'max']);


判断集合中元素是否存在:


assert(names.contains('jack'));
assert(names.containsAll(['jack', 'tony']));


set还有一个intersection的操作,用来求两个set的交集:


var name1 = Set<String>();
name1.addAll(['jack', 'tony', 'max']);
var name2 = Set.from(['tony', 'bily']);
var intersection = name1.intersection(name2);


Map的使用


Map是一种key,value的数据类型,也是一种在程序中非常常见的数据类型。


先看下怎么创建Map:


// 创建map
var studentMap = {
  'name': 'jack',
  'age': '18',
  'class': 'class one'
};
var teacherMap = Map();
var teacherMap2 = Map<String, String>();


添加和删除:


var studentMap =Map();
  studentMap.putIfAbsent('name', ()=>'jack');
  studentMap.remove('name');


判断map中是否包含某个key可以使用containsKey():


assert(studentMap.containsKey('name'));


常见的集合方法


集合中最常见的方法就是判断集合是否为空:


assert(studentMap.isEmpty);
assert(studentMap.isNotEmpty);


如果想对集合中的每个元素都进行某个函数操作,则可以使用forEach():


var names = ['jack', 'bob', 'tom'];
names.forEach((name) => print('the name is $name'));
var nameMap = {};
nameMap.forEach((k, v) {
});


如果是可遍历对象,则有一个map方法,map方法会返回一个新的对象:


var names = ['jack', 'bob', 'mark'];
var names2 = names.map((name) => name.toUpperCase());


注意,map返回的是一个Iterable,它是延时计算的,只有被使用的时候才会进行计算。


如果你想立即计算的话,则可以使用map().toList() 或者 map().toSet():


var names2 =
    names.map((name) => name.toUpperCase()).toList();


可遍历对象还可以进行条件选择。比如使用where()来获得所有匹配的对象,使用any()来判断集合中是否有匹配的对象,使用every()来判断集合中是否全部匹配。


var names = ['jack', 'bob', 'max'];
bool hasJack(String name) =>
    name == 'jack';
var seleteJack =
    names.where((name) => hasJack(name));
assert(names.any(hasJack));
assert(!names.every(hasJack));


总结



集合是在程序编写过程中非常常用的一种类型,大家一定要熟练掌握。

相关文章
|
3天前
|
Java
Java Set 是一个不包含重复元素的集合接口,确保每个元素在集合中都是唯一的
【10月更文挑战第14天】Java Set 是一个不包含重复元素的集合接口,确保每个元素在集合中都是唯一的。本文介绍了 Set 的独特特性和两个常用实现类:基于哈希表的 HashSet 和基于红黑树的 TreeSet。通过示例代码展示了它们如何高效地处理唯一性约束的数据。
14 3
|
4月前
|
存储 Dart
Dart中的集合类型:List(数组/列表)
Dart中的集合类型:List(数组/列表)
124 0
|
5月前
|
存储 Java 索引
集合进阶Collection集合
这篇文档介绍了Java中的Collection集合和其子类List与Set的基本概念和特性。
46 3
|
5月前
|
Java
Java【代码分享 12】判断一个集合是否包含另一个集合中的一个或多个元素 retainAll() 及其他方法
Java【代码分享 12】判断一个集合是否包含另一个集合中的一个或多个元素 retainAll() 及其他方法
238 0
|
Python
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
|
Kotlin
Kotlin 中List集合,Set集合,Map集合,数组的详解
Kotlin 中List集合,Set集合,Map集合,数组的详解
95 0
Java 查找两个有复杂对象的集合中的不同元素和相同的元素
Java 查找两个有复杂对象的集合中的不同元素和相同的元素
154 0
|
存储 Java 索引
【Java】集合与数组关系,认识集合,使用集合,集合使用判断情况
【Java】集合与数组关系,认识集合,使用集合,集合使用判断情况
10739 0
|
存储 Java
Java中Collection集合概述、基本使用、常用方法及Collection集合存储学生对象并遍历
Collection集合概述、基本使用、常用方法及Collection集合存储学生对象并遍历的简单示例
118 0
Java中Collection集合概述、基本使用、常用方法及Collection集合存储学生对象并遍历
GoogleGuava - 第 2 章 集合——集合扩展工具类
GoogleGuava - 第 2 章 集合——集合扩展工具类
87 0
GoogleGuava - 第 2 章 集合——集合扩展工具类