Java如何统计数组中各个的值的个数
编程界的探索者
2024-04-02 17:21
这篇文章将为大家详细讲解有关Java如何统计数组中各个的值的个数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Java统计数组中各个值个数的方法
简介
统计数组中各个值出现的次数是一个常见的编程任务。Java提供了多种方法来完成此项任务,每种方法都有其独特的优点和缺点。
使用HashMap
HashMap是Java中存储键值对的常用数据结构。要统计数组中各个值出现的次数,我们可以创建一个HashMap,其中键是数组中的值,值是该值出现的次数。
import java.util.HashMap;
public class ArrayCount {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 1, 2, 3};
HashMap<Integer, Integer> countMap = new HashMap<>();
for (int num : arr) {
if (countMap.containsKey(num)) {
countMap.put(num, countMap.get(num) + 1);
} else {
countMap.put(num, 1);
}
}
for (Integer key : countMap.keySet()) {
System.out.println("Value " + key + " occurs " + countMap.get(key) + " times");
}
}
}
使用Map.Entry
Map.Entry是一个表示键值对的内部类。我们可以使用Map.Entry来遍历Map并打印每个值出现的次数。
import java.util.HashMap;
import java.util.Map.Entry;
public class ArrayCount {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 1, 2, 3};
HashMap<Integer, Integer> countMap = new HashMap<>();
for (int num : arr) {
if (countMap.containsKey(num)) {
countMap.put(num, countMap.get(num) + 1);
} else {
countMap.put(num, 1);
}
}
for (Entry<Integer, Integer> entry : countMap.entrySet()) {
System.out.println("Value " + entry.getKey() + " occurs " + entry.getValue() + " times");
}
}
}
使用Arrays.sort()和二分搜索
Arrays.sort()方法可以对数组进行排序,然后我们可以使用二分搜索来查找每个值出现的次数。
import java.util.Arrays;
public class ArrayCount {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 1, 2, 3};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
int count = 1;
while (i + 1 < arr.length && arr[i] == arr[i + 1]) {
count++;
i++;
}
System.out.println("Value " + arr[i] + " occurs " + count + " times");
}
}
}
使用IntStream
Java 8中的IntStream可以用来简化数组计数任务。
import java.util.stream.IntStream;
public class ArrayCount {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 1, 2, 3};
IntStream.of(arr)
.boxed()
.distinct()
.forEach(num -> System.out.println("Value " + num + " occurs " + IntStream.of(arr).filter(n -> n == num).count() + " times"));
}
}
选择方法
选择哪种方法取决于数组的大小和具体要求。对于较小的数组,HashMap可能是最佳选择。对于较大的数组,Arrays.sort()和二分搜索可能更有效率。IntStream方法在Java 8及更高版本中可用,并提供了一种简洁的方式来计数数组中的值。
以上就是Java如何统计数组中各个的值的个数的详细内容,更多请关注编程学习网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341