Java 未使用HashMap正确打印每个键的出现次数

Java 未使用HashMap正确打印每个键的出现次数,java,hashmap,Java,Hashmap,我试图打印一个数组中某个特定键出现了多少次,似乎它正在为所有值打印一次。有人能告诉我下面的代码中有什么逻辑错误吗 import java.util.HashMap; import java.util.Map; public class MostOccuranceOfNumber { public static void main(String[] args) { int[] n = {1,2,3,4,5,6,7,7,7,7}; Map<In

我试图打印一个数组中某个特定键出现了多少次,似乎它正在为所有值打印一次。有人能告诉我下面的代码中有什么逻辑错误吗

import java.util.HashMap;
import java.util.Map;

public class MostOccuranceOfNumber {

    public static void main(String[] args) {


        int[] n = {1,2,3,4,5,6,7,7,7,7};

        Map<Integer, Integer> map = new HashMap<Integer,Integer>();

        // Create Hash Map

        for(int i = 0 ; i < n.length ; i++){


            if(map.containsKey(n)){

                map.put(n[i], map.get(n[i]) +1);

            }
            else{

                map.put(n[i], 1);
            }

            for(Map.Entry<Integer, Integer> m : map.entrySet()){

                System.out.println("Key "+m.getKey()+"Occured"+m.getValue()+"times");

            }


        }

    }

}
import java.util.HashMap;
导入java.util.Map;
公营班级人数最多{
公共静态void main(字符串[]args){
int[]n={1,2,3,4,5,6,7,7,7};
Map Map=newhashmap();
//创建哈希映射
for(int i=0;i
试试这个:

import java.util.HashMap;
import java.util.Map;

public class MostOccuranceOfNumber {

public static void main(String[] args) {


    int[] n = {1,2,3,4,5,6,7,7,7,7};

    Map<Integer, Integer> map = new HashMap<Integer,Integer>();

    // Create Hash Map

    for(int i = 0 ; i < n.length ; i++){


        if(map.containsKey(n[i])){//you made mistake here

            map.put(n[i], map.get(n[i]) +1);

        }
        else{

            map.put(n[i], 1);
        }



    }

     }
for(Map.Entry<Integer, Integer> m : map.entrySet()){

            System.out.println("Key  "+m.getKey()+"Occured "+m.getValue()+" times ");//Sorry forgot to take it outside


 }

}
import java.util.HashMap;
导入java.util.Map;
公营班级人数最多{
公共静态void main(字符串[]args){
int[]n={1,2,3,4,5,6,7,7,7};
Map Map=newhashmap();
//创建哈希映射
for(int i=0;i
为什么要将一个循环嵌套在另一个循环中?您要对每个元素进行迭代,这意味着每次出现
7
都要进行一次迭代,因此每次都会打印出计数。你想得到一个只包含唯一值的a集合,然后在查询原始集合的计数时对该集合进行迭代。哦,将一个循环嵌套在另一个循环中是我没有意识到的逻辑错误,但是将其粘贴到for循环之外会再次将每个键值打印为1 only
if(map.containsKey(n)
没有意义。
n
是一个数组。@John你在使用IDE吗?你应该在那一行得到一个可疑的方法调用警告。你仍然在第一行中有第二个
for
循环。