Я пытаюсь напечатать, сколько раз определенный ключ произошел в массиве, и кажется, что он печатает один для всех значений. Может кто-нибудь пожалуйста, скажите мне, что логическая ошибка, я имею в коде ниже:Не печатайте вхождения каждого ключа правильно с помощью 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<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");
}
}
}
}
Почему вы гнездятся один цикл внутри другого? –
Вы выполняете итерацию по каждому элементу, что означает одну итерацию для каждого появления '7', поэтому он будет распечатывать счет каждый раз. Вы хотите получить набор, содержащий только уникальные значения, а затем перебирать этот набор, консультируясь с исходным набором для подсчетов. – Eraph
О, Вложение одной петли в другую - это логическая ошибка, которую я не понимал, но вставка ее за цикл for снова печатает значения каждого ключа как только 1 – John