📜  dart 在列表中查找元素 - Dart (1)

📅  最后修改于: 2023-12-03 14:40:36.942000             🧑  作者: Mango

Dart 在列表中查找元素

在 Dart 中,我们可以使用各种不同的方法来查找列表中的元素。在本文中,我们将讨论一些不同的技术,以帮助您在您的 Dart 应用程序中查找特定的元素。

线性搜索

线性搜索是最简单的方法之一,用于在列表中查找特定的元素。它按照列表中元素的顺序逐个比较每个元素,直到找到所需的元素,或直到遍历完整个列表。

bool linearSearch(List list, dynamic element) {
  for (var i = 0; i < list.length; i++) {
    if (list[i] == element) {
      return true;
    }
  }
  return false;
}

这个函数将返回一个布尔值,指示是否找到了所需的元素。这种方法可能在较小的列表中很有效,但对于大型列表可能会变得非常缓慢。

二分查找

二分查找(也称为折半查找)是一种更高效的查找算法,用于在已排序的列表中查找元素。它通过反复将目标元素与列表中的中间元素进行比较,从而缩小待查找区间的范围。

bool binarySearch(List list, dynamic element) {
  int min = 0;
  int max = list.length - 1;
  int guess;

  while (min <= max) {
    guess = ((min + max) / 2).floor();

    if (list[guess] == element) {
      return true;
    } else if (list[guess] < element) {
      min = guess + 1;
    } else {
      max = guess - 1;
    }
  }
  return false;
}

这个函数使用了一个 while 循环来反复比较列表的中间元素,直到找到所需的元素。由于每次循环都会将待查找区间的范围减半,因此二分查找比线性查找更快,特别是在大型列表中。

使用 Dart 内置的查找函数

Dart 还提供了一些内置的函数,可用于在列表中查找元素。这些函数在复杂度上可能会更高效,但它们的用法比较简单。

contains() 函数

contains() 函数可用于检查列表中是否包含特定元素。

var list = [1, 2, 3, 4, 5];
if (list.contains(3)) {
  print('List contains 3');
}
indexWhere() 函数

indexWhere() 函数可用于在列表中查找符合特定条件的元素,并返回其索引。

var list = ['apple', 'banana', 'orange', 'pear'];
var index = list.indexWhere((element) => element.startsWith('b'));
print('Index of first element starting with b: $index');
结论

无论您选择哪种方法来查找列表中的元素,都需要考虑列表的大小和性能需求。如果列表很小,那么线性查找可能就足够了;但如果列表较大,则使用更快的二分查找可能会更好。Dart 内置的查找函数也可以帮助您更轻松地找到所需的元素。