有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中查找数组中一个数字的重复次数

假设我有一个长度为10000的数组,其中的值来自1-9,我需要用java编写一个程序,以高效的方式找到一个数字重复的次数

我想定义9变量,并使用if-else-if-ladder,如果数字重复,我将增加其值,但这不是一种有效的方法,请建议我其他方法


共 (5) 个答案

  1. # 1 楼答案

    下面是完整的运行示例。。。希望对你有帮助

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;
    
    public class CountDuplicateItems {
    
        public static void main(String[] args) {
    
            List<String> list = new ArrayList<String>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
            list.add("b");
            list.add("c");
            list.add("a");
            list.add("a");
            list.add("a");
    
            System.out.println("\nExample 1 - Count 'a' with frequency");
            System.out.println("a : " + Collections.frequency(list, "a"));
    
            System.out.println("\nExample 2 - Count all with frequency");
            Set<String> uniqueSet = new HashSet<String>(list);
            for (String temp : uniqueSet) {
                System.out.println(temp + ": " + Collections.frequency(list, temp));
            }
    
            System.out.println("\nExample 3 - Count all with Map");
            Map<String, Integer> map = new HashMap<String, Integer>();
    
            for (String temp : list) {
                Integer count = map.get(temp);
                map.put(temp, (count == null) ? 1 : count + 1);
            }
    
            printMap(map);
    
            System.out.println("\nSorted Map");
            Map<String, Integer> treeMap = new TreeMap<String, Integer>(map);
            printMap(treeMap);
    
        }
    
        public static void printMap(Map<String, Integer> map) {
    
            for (Map.Entry<String, Integer> entry : map.entrySet()) {
                System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
            }
    
        }
    
    }
    

    输出

    示例1-使用频率计算“a” a:4

    示例2-使用频率计数所有 d:1 b:2 c:2 a:4

    示例3-使用Map计算所有 关键字:d值:1 键:b值:2 键:c值:2 键:a值:4

    分类地图 键:a值:4 键:b值:2 键:c值:2 关键字:d值:1

  2. # 2 楼答案

    使用反向量。假设我们定义一个有10个位置的向量计数[]。在计数[1]中,我们存储“1”在数组中出现的次数,在计数[2]中,我们计数2,以此类推

  3. # 3 楼答案

    创建新数组numbers[8],并在函数中使用任何循环numbers[array[n - 1]]计数数,其中array是数组n是计数器

  4. # 4 楼答案

    制作一个HashMap(Key=>;Number-Value=>;count-times) 每次找到数字时增加值

    下面是一些示例代码:

    if(map.containsKey(currentNumber)){
                int count = map.get(random);
                count++;
                map.put(random, count);
            }
    
  5. # 5 楼答案

        Map<Integer,Integer> cnts = new HashMap<Integer, Integer>();
        int array[] = new int[1000];
    
        for(int i=0;i<array.length;i++){
            for (Map.Entry<Integer, Integer> entry : cnts.entrySet()) {
                if(array[i]==entry.getKey()){
                    int val = entry.getValue()+1; // increment value by 1
                    entry.setValue(val);
                }
            }
        }
    

    Create mapKey是数字,Value是出现的次数