Java Карта ключей HashMap выглядит неправильно - PullRequest
1 голос
/ 05 апреля 2020

Может кто-нибудь перепроверить, чтобы увидеть, что не так с моим кодом ниже, что будет оценено. Я пробовал много раз и разными способами, но все равно дал мне результат, которого я никогда не ожидал.

Ниже приведен метод, который возвращает значения Map

Я сделал 1 вызванный, с передачей значения == 0, он работает просто отлично.

-> результат работает отлично, первый ключ = 0 и значение верное и все правильно.

Я сделал 2-й вызов с передачей значения = 1

-> результат НЕПРАВИЛЬНЫЙ, первый ключ == 16, где я ожидал, должен быть = 12

public Map<Integer, String[]> noteNumberNoteNameMap;    
public Map<Integer, String[]> getNoteNumberNoteNameMap(int octave ) {
    noteNumberNoteNameMap = new HashMap<>();
    noteNumberNoteNameMap.put(12*octave+0,  new String[] { "C" });
    noteNumberNoteNameMap.put(12*octave+1,  new String[] { "C#", "Db" });
    noteNumberNoteNameMap.put(12*octave+2,  new String[] { "D" });
    noteNumberNoteNameMap.put(12*octave+3,  new String[] { "D#", "Eb" });
    noteNumberNoteNameMap.put(12*octave+4,  new String[] { "E" });
    noteNumberNoteNameMap.put(12*octave+5,  new String[] { "F" });
    noteNumberNoteNameMap.put(12*octave+6,  new String[] { "F#", "Gb" });
    noteNumberNoteNameMap.put(12*octave+7,  new String[] { "G" });
    noteNumberNoteNameMap.put(12*octave+8,  new String[] { "G#", "Ab" });
    noteNumberNoteNameMap.put(12*octave+9,  new String[] { "A" });
    noteNumberNoteNameMap.put(12*octave+10,  new String[] { "A#", "Bb" });
    noteNumberNoteNameMap.put(12*octave+11,  new String[] { "B" }); 
    return noteNumberNoteNameMap;
}

Пожалуйста, сообщите. Заранее спасибо.

1 Ответ

0 голосов
/ 05 апреля 2020

HashMap не соответствует порядку вставки. Если вы хотите, чтобы порядок следовал как порядок вставки, используйте LinkedHashMap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...