Dart/Flutter:如何比较两组集合相等的例子

1,020 阅读3分钟

本教程展示了如何在Dart和Flutter编程中比较两个集合的多个例子。

如果符合以下条件,两个集合是相等的

  • 两个集合的长度相等
  • 元素的顺序并不重要
  • 如果元素是一个对象,两个集合中的对象的键和值应该匹配。

检查两个集合是否相等

在dart中,quiver包是一个可重复使用的函数集合库。

setsEqual 在集合函数中,比较两个集合,如果相等则返回true ,否则不相等。

语法:

bool setsEqual(Set? a, Set? b)

它需要两个集合进行比较 返回值:truefalse

下面是一个示例代码

import 'package:quiver/collection.dart';

void main() {
  var set1 = {3, 7, 2};
  var set2 = {3, 7, 2};
  print(setsEqual(set1, set2)); // true

  var set3 = {13, 71, 21};
  var set4 = {31, 71, 2};
  print(setsEqual(set3, set4)); // false
}



输出

true
false

如何在Flutter中比较两组数字的相等或不相等

如果你的应用程序是flutter,它有一个foundation.dart 库。

foundation.dart 有一个 方法,对集合中的每个元素进行比较,并返回布尔类型的相等比较结果。setEquals

bool setEquals(Set? a, Set? b)
  • true。如果两个Set是相等的,返回true ,忽略元素的顺序。
  • false:如果两个Set是相等的,则返回false。元素在集合中。这里,比较两个数字集合,如果两个集合的值相等,则返回true

下面是一个数字集相等的例子。

import 'package:flutter/foundation.dart';

void main() {
  var set1 = {3, 7, 2};
  var set2 = {3, 7, 2};
  print(setEquals(set1, set2)); // true
  
  var set3 = {13, 71, 21};
  var set4 = {31, 71, 2};
  print(setEquals(set3, set4)); // false
}

如何在flutter中比较两个字符串集?

在下面的例子中,set1和set2是相等的。因此,它返回真。

每个集合中的值都与另一个集合的值进行比较,以确定是否相等。

import 'package:flutter/foundation.dart';

void main() {
  var set1 = {"one", "two", "three"}
  var set2 = {"one", "two", "three"};
  print(setEqual(set1, set2)); // true
}

在下面的例子中,set1和set2是不同的,因为其中一个值("二"!="二")不相等。因此,它返回错误。所以,它比较的是一个字符串的精确大小写匹配。

import 'package:flutter/foundation.dart';

void main() {
  var set1 = {"one", "Two", "three"}
  var set2 = {"one", "two", "three"};
  print(setEqual(set1, set2)); // fase
}

如何在Flutter中比较两组对象是否相等?

这表明你要比较两组对象,如果两组对象相等则返回,否则返回错误。

以下是所需的步骤。

  • 创建了具有id、name、salary和joinDate的雇员。
  • 在下面的例子中创建了四个集合
  • 使用以下方法比较两个集合
import 'package:flutter/foundation.dart';
import 'dart:convert';

class Employee {
  final int id;
  final String name;
  final int salary;
  final DateTime joinDate;

  Employee(this.id, this.name, this.salary, this.joinDate);

  Map toJson() =>
      {"id": id, "name": name, "salary": salary, "doj": joinDate.toString()};
}

void main() {
  final e1 =
      Employee(11, 'Erwin', 9000, DateTime.parse("2020-06-21 00:00:00.000"));
  final e2 =
      Employee(21, 'Andrew', 70000, DateTime.parse("2021-07-23 00:00:00.000"));
  final e3 =
      Employee(4, 'Mark', 8000, DateTime.parse("2017-08-24 00:00:00.000"));
  final e4 =
      Employee(12, 'Otroc', 5000, DateTime.parse("2022-12-05 00:00:00.000"));

  final Set employees = {e1, e2, e3, e4};
  final Set employees1 = {e1, e2, e3, e4};
  print(setEquals(employees, employees1)); // true

  final Set employees2 = {e1, e3, e4};
  final Set employees3 = {e1, e2, e4};
  print(setEquals(employees2, employees3)); // false
}

总结

在本教程中,学习了如何在Dart和flutter编程中比较两个数字、字符串和对象的平等性。