首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘Java高效统计不同整数的秘诀:掌握这5招,轻松应对复杂问题!

发布于 2025-06-19 21:17:21
0
11

在Java编程中,高效地统计不同整数的出现次数是常见且具有挑战性的任务。这不仅需要我们熟练掌握编程语言的基础,还需要对算法和数据结构有深刻的理解。以下将详细介绍五招秘诀,帮助您轻松应对这一类复杂问题。...

在Java编程中,高效地统计不同整数的出现次数是常见且具有挑战性的任务。这不仅需要我们熟练掌握编程语言的基础,还需要对算法和数据结构有深刻的理解。以下将详细介绍五招秘诀,帮助您轻松应对这一类复杂问题。

第一招:数组或HashMap记录数字出现次数

当我们需要统计一个整数范围内所有数字的出现次数时,可以使用数组或HashMap来存储每个数字的计数。这种方法简单直接,适合数字范围较小的情况。

代码示例

public class CountDigits { public static void countDigitsInRange(int start, int end) { int[] count = new int[end - start + 1]; for (int i = start; i <= end; i++) { count[i - start]++; } for (int i = 0; i < count.length; i++) { if (count[i] > 0) { System.out.println("数字 " + (i + start) + " 出现了 " + count[i] + " 次"); } } } public static void main(String[] args) { countDigitsInRange(1, 100); }
}

第二招:位操作处理大整数

对于非常大的整数,我们可以使用位操作来统计每一位上数字的出现次数。这种方法通常比数组或HashMap更加高效。

代码示例

public class BitwiseCount { public static void countBitsInNumber(long num) { int[] count = new int[10]; while (num != 0) { count[(int) (num % 10)]++; num /= 10; } for (int i = 0; i < count.length; i++) { System.out.println("数字 " + i + " 出现了 " + count[i] + " 次"); } } public static void main(String[] args) { long num = 123456789012345678901234567890L; countBitsInNumber(num); }
}

第三招:利用数学方法统计特定数字出现次数

在某些特定情况下,我们可以利用数学方法来统计特定数字的出现次数。例如,统计1到100中所有整数中出现数字9的次数。

代码示例

public class MathCount { public static void countNinesInRange(int start, int end) { int count = 0; for (int i = start; i <= end; i++) { if (String.valueOf(i).contains("9")) { count++; } } System.out.println("在1到100的整数中,数字9出现了 " + count + " 次"); } public static void main(String[] args) { countNinesInRange(1, 100); }
}

第四招:并行计算提高效率

当处理大量数据时,使用并行计算可以显著提高统计的效率。在Java中,我们可以利用并行流(parallelStream)或线程池(ExecutorService)来实现。

代码示例

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
public class ParallelCount { public static void countWithParallelStream() { AtomicInteger count = new AtomicInteger(0); int[] numbers = new int[1000000]; for (int i = 0; i < numbers.length; i++) { numbers[i] = i; } int cores = Runtime.getRuntime().availableProcessors(); ExecutorService executor = Executors.newFixedThreadPool(cores); for (int number : numbers) { executor.submit(() -> { if (number % 10 == 7) { count.incrementAndGet(); } }); } executor.shutdown(); while (!executor.isTerminated()) { // 等待所有任务完成 } System.out.println("数字7出现了 " + count.get() + " 次"); } public static void main(String[] args) { countWithParallelStream(); }
}

第五招:优化算法和数据结构

在统计过程中,优化算法和数据结构也是提高效率的关键。例如,使用计数排序算法(Counting Sort)可以快速对整数进行排序,然后再进行统计。

代码示例

public class CountingSortExample { public static void countingSort(int[] arr) { int max = arr[0]; int min = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] > max) { max = arr[i]; } if (arr[i] < min) { min = arr[i]; } } int range = max - min + 1; int[] countArray = new int[range]; for (int i = 0; i < arr.length; i++) { countArray[arr[i] - min]++; } int index = 0; for (int i = 0; i < countArray.length; i++) { while (countArray[i] > 0) { arr[index++] = i + min; countArray[i]--; } } } public static void main(String[] args) { int[] arr = {4, 2, 2, 8, 3, 3, 1}; countingSort(arr); for (int num : arr) { System.out.print(num + " "); } }
}

通过掌握这五招秘诀,您可以在Java编程中高效地统计不同整数的出现次数,从而轻松应对各种复杂问题。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流