杰瑞科技汇

java数组中相同的元素个数组中

Java数组中相同元素个数的统计

在Java中,统计数组中相同元素的个数有几种常见方法,以下是几种实现方式:

java数组中相同的元素个数组中-图1
(图片来源网络,侵删)

方法1:使用HashMap

import java.util.HashMap;
import java.util.Map;
public class CountDuplicates {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 2, 3, 5, 6, 1, 1};
        Map<Integer, Integer> frequencyMap = new HashMap<>();
        for (int num : array) {
            frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
        }
        // 打印结果
        for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
            System.out.println("元素: " + entry.getKey() + ", 出现次数: " + entry.getValue());
        }
    }
}

方法2:使用Java 8 Stream API

import java.util.Arrays;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
public class CountDuplicatesStream {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 2, 3, 5, 6, 1, 1};
        Map<Integer, Long> frequencyMap = Arrays.stream(array)
                .boxed()
                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
        // 打印结果
        frequencyMap.forEach((key, value) -> 
            System.out.println("元素: " + key + ", 出现次数: " + value));
    }
}

方法3:使用数组(适用于已知范围的小数值)

public class CountDuplicatesArray {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 2, 3, 5, 6, 1, 1};
        int max = Arrays.stream(array).max().orElse(0);
        int[] countArray = new int[max + 1];
        for (int num : array) {
            countArray[num]++;
        }
        // 打印结果
        for (int i = 0; i < countArray.length; i++) {
            if (countArray[i] > 0) {
                System.out.println("元素: " + i + ", 出现次数: " + countArray[i]);
            }
        }
    }
}

方法4:使用TreeMap(自动排序)

import java.util.Map;
import java.util.TreeMap;
public class CountDuplicatesTreeMap {
    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 2, 3, 5, 6, 1, 1};
        Map<Integer, Integer> frequencyMap = new TreeMap<>();
        for (int num : array) {
            frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
        }
        // 打印结果
        frequencyMap.forEach((key, value) -> 
            System.out.println("元素: " + key + ", 出现次数: " + value));
    }
}

注意事项

  1. 对于大型数组,HashMap方法通常效率最高,时间复杂度为O(n)
  2. 如果数组元素范围已知且较小,使用数组计数法效率最高
  3. 如果需要结果按元素排序,可以使用TreeMap
  4. Java 8的Stream API提供了更简洁的实现方式

选择哪种方法取决于你的具体需求,如数组大小、元素范围以及是否需要排序等。

java数组中相同的元素个数组中-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇