Как Поддержать порядок вставки

Я хочу добавить ключ, пару значения в хеш-таблицу (или любой другой набор), но иметь для поддержания порядка вставки. Как я могу сделать это?

Как я добавлю 1, как включают "тот" как значение, 2 столь же ключевой и "два" как значение.

Вывод должен быть:

1:one
2:two
27
задан double-beep 31 January 2019 в 18:10
поделиться

3 ответа

Вот характерные отличия некоторых важных реализаций Map :

  • LinkedHashMap : «с предсказуемым порядком итераций [...], который обычно является порядком, в котором ключи были вставлены в карта ( порядок вставки ). «
  • HashMap :« не дает никаких гарантий относительно порядка отображения »
  • TreeMap :» сортируется в соответствии с естественным порядком его ключей, или с помощью Компаратора "

Так что, похоже, LinkedHashMap - это то, что вам нужно в этом случае.

Вот отрывок, иллюстрирующий различия; он также показывает общий способ перебора всех записей карты и то, как использование интерфейса для ссылки на объекты обеспечивает большую гибкость выбора реализации.

import java.util.*;
public class MapExample {
    public static void main(String[] args) {
        populateThenDump(new HashMap<String,Integer>());
        populateThenDump(new TreeMap<String,Integer>());
        populateThenDump(new LinkedHashMap<String,Integer>());
    }
    static void populateThenDump(Map<String,Integer> map) {
        System.out.println(map.getClass().getName());

        map.put("Zero",  0);
        map.put("One",   1);
        map.put("Two",   2);
        map.put("Three", 3);
        map.put("Four",  4);

        for (Map.Entry<String,Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " => " + entry.getValue());
        }
    }
}

Результатом приведенного выше фрагмента является (, как показано на ideone.com ):

java.util.HashMap          // unordered, results may vary
Three => 3
Zero => 0
One => 1
Four => 4
Two => 2
java.util.TreeMap          // ordered by String keys lexicographically
Four => 4
One => 1
Three => 3
Two => 2
Zero => 0
java.util.LinkedHashMap    // insertion order
Zero => 0
One => 1
Two => 2
Three => 3
Four => 4

Связанные вопросы

Подобные вопросы

60
ответ дан 28 November 2019 в 04:30
поделиться

Вы ищете класс LinkedHashMap .

2
ответ дан 28 November 2019 в 04:30
поделиться

Для хэш-таблицы используйте LinkedHashMap класс.

11
ответ дан 28 November 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: