Порядок итерации Java HashMap - поведение кажется последовательным, несмотря на то, что в документации указано иноеJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Порядок итерации Java HashMap - поведение кажется последовательным, несмотря на то, что в документации указано иное

Сообщение Anonymous »

Я изучаю HashMaps на Java и не понимаю порядка итерации. В документации указано, что HashMap не гарантирует какой-либо определенный порядок итерации, но в моем простом тесте порядок остается последовательным:

Этот класс не дает никаких гарантий. что касается порядка карты; в частности, он не гарантирует, что порядок останется постоянным с течением времени. Документация по Java 11

Код: Выделить всё

import java.util.HashMap;

public class HashMapDemo {
public static void main(String[] args) {
HashMap dishes = new HashMap();

// Adding more elements with complex keys
dishes.put("dish-1234", "Pho");
dishes.put("dish-5678", "Spicy Beef Noodle Soup");
dishes.put("dish-9012", "Broken Rice");
dishes.put("dish-3456", "Banh Mi");
dishes.put("dish-7890", "Hu Tieu");
dishes.put("dish-2345", "Mi Quang");
dishes.put("dish-6789", "Crab Noodle Soup");
dishes.put("dish-0123", "Rolled Rice Cake");

System.out.println("First time:");
dishes.forEach((id, name) -> System.out.println(id + ": " + name));

// Create new HashMap with same data
HashMap dishes2 = new HashMap();
dishes2.putAll(dishes);

System.out.println("\nSecond time (New HashMap):");
dishes2.forEach((id, name) -> System.out.println(id + ": " + name));
}
}
Вывод:

Код: Выделить всё

First time:
dish-7890: Hu Tieu
dish-3456: Banh Mi
dish-2345: Mi Quang
dish-1234: Pho
dish-0123: Rolled Rice Cake
dish-5678: Spicy Beef Noodle Soup
dish-9012: Broken Rice
dish-6789: Crab Noodle Soup

Second time (New HashMap):
dish-7890: Hu Tieu
dish-3456: Banh Mi
dish-2345: Mi Quang
dish-1234: Pho
dish-0123: Rolled Rice Cake
dish-5678: Spicy Beef Noodle Soup
dish-9012: Broken Rice
dish-6789: Crab Noodle Soup
Я понимаю, что если мне нужен гарантированный порядок, мне следует использовать LinkedHashMap или TreeMap, но я пытаюсь понять фактическое поведение HashMap. Я читал некоторые статьи в документации об изменении размера и повторном хешировании, возможно, мне это слишком сложно понять.
Я также читал некоторые сообщения, в которых говорится об этой проблеме, но я не могу воспроизвести
  • Почему HashMap не гарантирует, что порядок карты останется постоянным с течением времени.
  • Причина разницы в порядок вставки HashMap и LinkedHashMap
Как мне это понять?

Подробнее здесь: https://stackoverflow.com/questions/792 ... entation-s
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»