Dart/Flutter:如何比较两个列表是否相等(附实例)

2,387 阅读3分钟

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

Compare list numbers strings and objects for equality  in Dart or Flutter

  • 比较列表的相等
  • 检查字符串列表的比较是否相等
  • 如何在flutter中比较一个列表与一个字符串

如何在Dart中检查给定的列表是否相等?

在dart中,quiver包一个集合实用可重用函数的库

它有一个listsEqual 函数,比较两个列表,如果相等则返回true,否则不相等。

语法:

bool listsEqual(List? a, List? b)

它需要两个列表进行比较 返回值:truefalse

下面是一个示例代码

import 'package:quiver/collection.dart';

void main() {
  var list1 = [5, 8, 4];
  var list2 = [5, 8, 4];
  print(listsEqual(list1, list2)); // true

  var list3 = [15, 8, 4];
  var list4 = [5, 8, 4];
  print(listsEqual(list3, list4)); // false
}

输出

true
false

如何在Flutter中比较两个数字列表的相等或不相等

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

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

bool listEquals<T>(List<T>? a, List<T>? b)
  • true。如果两个列表相等,返回true,忽略元素的顺序。
  • false:列表中的元素。这里,比较两个数字列表,如果两个列表的值相等,则返回true。

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

import 'package:flutter/foundation.dart';

void main() {
  var list1 = [5, 8, 4];
  var list2 = [5, 8, 4];
  print(listEquals(list1, list2)); // true
  
  var list3 = [15, 8, 4];
  var list4 = [5, 8, 4];
  print(listEquals(list3, list4)); // false
}

如何在flutter中比较两个字符串的列表

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

每个列表中的值与其他列表中的值进行比较,以实现平等。

import 'package:flutter/foundation.dart';

void main() {
  var list1 = ["one", "two", "three"];
  var list2 = ["one", "two", "three"];
  print(listEquals(list1, list2)); // true
}

在下面的例子中,list1 和 list2 是不同的,因为其中一个值("One" != "one")不相等。因此,它比较的是一个字符串的精确大小写匹配。

import 'package:flutter/foundation.dart';

void main() {
  var list1 = ["One", "two", "three"];
  var list2 = ["one", "two", "three"];
  print(listEquals(list1, list2)); // false
}

如何在Flutter中比较两个对象的列表是否相等?

这表明您比较两个对象列表,如果两个列表相等则返回,否则返回false。

以下是所需的步骤。

  • 创建了具有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<String, dynamic> 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 List<Employee> employees = [e1, e2, e3, e4];
  final List<Employee> employees1 = [e1, e2, e3, e4];
  print(listEquals(employees, employees1)); // true

  final List<Employee> employees2 = [e1, e3, e4];
  final List<Employee> employees3 = [e1, e2, e4];
  print(listEquals(employees2, employees3)); // false
}

总结

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