You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中统计数组内每个数字的出现次数?

解决方案

要统计数组中每个数字的出现次数并按指定格式输出,你可以用Map<int, int>存储每个数字对应的计数,遍历数组时更新计数,最后格式化打印结果即可。以下是完整实现:

void countAllNumbers(List<int> arr) {
  // 用Map存储数字与对应出现次数的映射
  Map<int, int> countMap = {};
  
  for (int num in arr) {
    // 若数字已存在则次数+1,不存在则初始化为1
    countMap[num] = (countMap[num] ?? 0) + 1;
  }
  
  // 按要求格式遍历输出
  countMap.forEach((num, count) {
    print('$num -> $count times');
  });
}

void main() {
  List<int> arr = [2,5,6,6,8,4,2,5,2];
  countAllNumbers(arr);
}

代码说明

  • Map存储计数:替代单个计数器,一次遍历就能记录所有数字的出现次数,避免重复遍历数组的低效操作。
  • 计数更新逻辑:countMap[num] ?? 0处理数字首次出现的情况(此时Map中无该键,默认取0),随后加1完成计数更新。
  • 格式化输出:通过forEach遍历Map,严格按照数字 -> 次数 times的格式打印结果。

与原有代码的对比

你之前的countTwo函数仅能统计单个数字,若要统计所有数字需多次调用函数、重复遍历数组。新方案只需一次数组遍历即可完成全部计数,效率更高且逻辑更简洁。

运行代码后输出结果:

2 -> 3 times
5 -> 2 times
6 -> 2 times
8 -> 1 times
4 -> 1 times

内容的提问来源于stack exchange,提问作者Mohmed Ashraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:25:37