Java HashMap用于计数数组项

Java HashMap用于计数数组项,java,arrays,hashmap,Java,Arrays,Hashmap,如何使用HashMap计算此数组中唯一项的数量: import java.util.Scanner; public class Entry { private Scanner scan = new Scanner(System.in); public void userInput(){ Scanner scan = new Scanner(System.in); System.out.println("Please tell me the amount of numbers yo

如何使用HashMap计算此数组中唯一项的数量:

import java.util.Scanner;

public class Entry {

    private Scanner scan = new Scanner(System.in);


public void userInput(){
Scanner scan = new Scanner(System.in);
System.out.println("Please tell me the amount of numbers you will be entering (Up to 50): ");
        int [] arr = new int[scan.nextInt()];      

        for(int i=0;i<arr.length; i++) {
            scan = new Scanner(System.in);
            System.out.println("Please enter a number: ");
            while(scan.hasNextInt()){
            int x = scan.nextInt();
            arr[i]= x;
            break;
            }
        }        

         System.out.println(" ");
         System.out.println("Results of Data Entry");
         System.out.println("_____________________");
         for(int i:arr){System.out.println(i + " occurs "); 
        }
} 
}

CountOccurrences的助手函数如下所示:

public static Map<Integer, Integer> countOccurences (int[] arr) {
    int len = arr.length;
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();

    for(int i = 0; i < len; i++) {
        int key = arr[i];
        if (map.containsKey(key)) {
            int value = map.get(key);
            map.put(key, value + 1);
        } else {
            map.put(key, 1);
        }
    }

    return map;
}
以上代码应该很容易阅读,如果你需要解释,请让我知道

完整的代码如下所示,请注意Hashmap是如何迭代的:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class main {

    private Scanner scan = new Scanner(System.in);

    public static void main(String args[]) {
        userInput();
    }

    public static void userInput() {
        Scanner scan = new Scanner(System.in);
        System.out
                .println("Please tell me the amount of numbers you will be entering (Up to 50): ");
        int[] arr = new int[scan.nextInt()];

        for (int i = 0; i < arr.length; i++) {
            scan = new Scanner(System.in);
            System.out.println("Please enter a number: ");
            while (scan.hasNextInt()) {
                int x = scan.nextInt();
                arr[i] = x;
                break;
            }
        }

        System.out.println(" ");
        System.out.println("Results of Data Entry");
        System.out.println("_____________________");

        Map<Integer, Integer> counts = countOccurences (arr);

        Iterator itr = counts.entrySet().iterator();
        while (itr.hasNext()) {
            Map.Entry pairs = (Map.Entry)itr.next();
            System.out.println(pairs.getKey() + " occurs " + pairs.getValue());
        }
    }

    public static Map<Integer, Integer> countOccurences (int[] arr) {
        int len = arr.length;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();

        for(int i = 0; i < len; i++) {
            int key = arr[i];
            if (map.containsKey(key)) {
                int value = map.get(key);
                map.put(key, value + 1);
            } else {
                map.put(key, 1);
            }
        }

        return map;
    }
}

试试这个。。你会得到你想要的

'public static void main(String args[])
    {
        int cnt=1;
        Integer a;

        Integer arr[] = {1,2,2,3,1,4,5,3,3,3};
        Map hm = new HashMap<Integer, Integer>();
        for(int i=0;i<arr.length;i++)
        {
            a=(Integer) hm.put(arr[i], cnt);    
            if(a!=null)
            {
                hm.put(arr[i],a+1);
            }
        }
            Set set = hm.entrySet();
          // Get an iterator
            Iterator it = set.iterator();
          // Display elements
            while(it.hasNext()) {
             Map.Entry me = (Map.Entry)it.next();
             System.out.print(me.getKey() + " occurs ");
             System.out.println(me.getValue());
            }
        }'

Map接口的putK,V方法返回同一个键的上一个值,如果第一次设置该键,则返回null。

该问题的答案告诉我什么都没有。看在上帝的份上,从已经链接的问题中可以看出,您不必执行scan=new ScannerSystem.in;两次。一次就够了。这是家庭作业问题吗?行得通!有没有不使用公共静态的方法呢?在最初的问题中,您可以在不使用公共静态的情况下将函数private Map countoccurrencess int[]arr添加到实体类中。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;

public class main {

    private Scanner scan = new Scanner(System.in);

    public static void main(String args[]) {
        userInput();
    }

    public static void userInput() {
        Scanner scan = new Scanner(System.in);
        System.out
                .println("Please tell me the amount of numbers you will be entering (Up to 50): ");
        int[] arr = new int[scan.nextInt()];

        for (int i = 0; i < arr.length; i++) {
            scan = new Scanner(System.in);
            System.out.println("Please enter a number: ");
            while (scan.hasNextInt()) {
                int x = scan.nextInt();
                arr[i] = x;
                break;
            }
        }

        System.out.println(" ");
        System.out.println("Results of Data Entry");
        System.out.println("_____________________");

        Map<Integer, Integer> counts = countOccurences (arr);

        Iterator itr = counts.entrySet().iterator();
        while (itr.hasNext()) {
            Map.Entry pairs = (Map.Entry)itr.next();
            System.out.println(pairs.getKey() + " occurs " + pairs.getValue());
        }
    }

    public static Map<Integer, Integer> countOccurences (int[] arr) {
        int len = arr.length;
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();

        for(int i = 0; i < len; i++) {
            int key = arr[i];
            if (map.containsKey(key)) {
                int value = map.get(key);
                map.put(key, value + 1);
            } else {
                map.put(key, 1);
            }
        }

        return map;
    }
}
'public static void main(String args[])
    {
        int cnt=1;
        Integer a;

        Integer arr[] = {1,2,2,3,1,4,5,3,3,3};
        Map hm = new HashMap<Integer, Integer>();
        for(int i=0;i<arr.length;i++)
        {
            a=(Integer) hm.put(arr[i], cnt);    
            if(a!=null)
            {
                hm.put(arr[i],a+1);
            }
        }
            Set set = hm.entrySet();
          // Get an iterator
            Iterator it = set.iterator();
          // Display elements
            while(it.hasNext()) {
             Map.Entry me = (Map.Entry)it.next();
             System.out.print(me.getKey() + " occurs ");
             System.out.println(me.getValue());
            }
        }'