在Dart中计算列表中重复元素的数量

问题描述 投票:0回答:1

我需要创建一个函数来计算列表中重复项目的数量,即我有这个列表:

['a', 'b', 'a', 'c', 'e', 'c', 'a']

输出是数字。在本例中,它是 2(“a”和“c”出现多次)。 我想我可以通过使用函数 forEach() 来解决这个任务。但我不太明白如何使用它。我很乐意提供帮助!

list dart
1个回答
0
投票

你需要存储已经发生的字符串的状态。因此,为了清楚起见,我会编写一个单独的函数来处理您的情况:

int getAmountOfDuplicateEntries(List items) {
  Map<String, int> collectedEntries = {};

  for (var item in items) {
    int value = collectedEntries[item] ?? 0;
    collectedEntries[item] = value + 1;
  }

  collectedEntries.removeWhere((key, value) => value <= 1);

  return collectedEntries.length;
}

List myItems1 = ['a', 'b', 'a', 'c', 'e', 'c', 'a'];
List myItems2 = ['foo', 'bar', 'foz', 'baz'];

int duplicates1 = getAmountOfDuplicateEntries(myItems1);
int duplicates2 = getAmountOfDuplicateEntries(myItems2);

在此解决方案中,我们将跟踪相似条目的确切数量。之后,我们只删除收集的仅出现过一次的条目。集合的长度将代表重复的集合。

© www.soinside.com 2019 - 2024. All rights reserved.