Коллекция Java, которая имеет пару ключ / значение и упорядочена в соответствии с порядком вставки - PullRequest
17 голосов
/ 29 ноября 2011

Я хочу кое-что, где я могу вставить пары ключ / значение, и порядок - это порядок, в который я вставляю элементы.

Я видел несколько постов, касающихся карт, но, похоже, мне нужно написать собственный компаратор для них.

Я хочу, чтобы первый вставленный элемент был первым сохраненным, а второй - вторым в коллекции и т. Д.

Ответы [ 4 ]

20 голосов
/ 29 ноября 2011

Попробуйте использовать LinkedHashMap из javadocs :

Хеш-таблица и реализация связанного списка интерфейса Map с предсказуемым порядком итераций. Эта реализация отличается от HashMap вчто он поддерживает двусвязный список, проходящий через все его записи.Этот связанный список определяет порядок итераций, который обычно является порядком, в котором ключи были вставлены в карту (порядок вставки).

7 голосов
/ 29 ноября 2011

Почему бы просто не создать class, содержащий ключ и значение, а затем сохранить их в вашей любимой реализации List?

class Pair {
    Key k;
    Value v;
}

List<Pair> stuff = new ArrayList<Pair>();

Pair p = new Pair();
...
stuff.add(p);
1 голос
/ 29 ноября 2011

Похоже, вам нужно использовать список с объектом имя / значение

List<NameValuePair> values = new Arraylist<NameValuePair>();

, а затем использовать список, как обычный список

class NameValuePair {
   private name;
   private value;

  ... get/set
}
0 голосов
/ 18 ноября 2015

LinkedHashMap - это правильный тип данных, который вы ищете! Поскольку он расширяет HashMap (который позволяет иметь элемент в паре ключ / значение) и поддерживает связанный список (который дает вам порядок вставки) записей.

Также проверьте следующие типы карт для получения дополнительной информации:

https://docs.oracle.com/javase/8/docs/api/

Перейдите в AbstractMap и проверьте их

HashMap & TreeMap

HashTable- http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

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