如何在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
相关产品推荐
相关产品推荐

