Карты (коллекция), которая поддерживает порядок вставки в Java - PullRequest
11 голосов
/ 04 марта 2012

Мне нужно использовать Карты в Java для приложения Android.Но проблема в том, что список сортируется автоматически.Как использовать Карты, чтобы получить данные в том же порядке, в котором я вставил данные.

Ответы [ 5 ]

20 голосов
/ 04 марта 2012

Для этой цели следует использовать LinkedHashMap. Посетите Документы Android и Документы Java для получения более подробной информации.

5 голосов
/ 04 марта 2012

LinkedHashMap поддерживает порядок вставки.

2 голосов
/ 04 марта 2012

Как вы и я обнаружили, LinkedHashMap не очень полезен. (Во всяком случае, в чем смысл его существования?)

У меня есть хэш-лист (семантически, я думаю, он должен был называться hashedlist)

http://code.google.com/p/synthfuljava/source/browse/trunk/gwt/util/org/synthful/gwt/util/HashList.java

Имеет массив и хэш-карту. Хранитель ключей хранит ключ.

hashlist.put (ключ, значение) будет выполнять

  • a map.put (ключ, значение)
  • , а также list.add (ключ)

Будет работать hashlist.get (int position) - map.get (list.get (position))

Это упрощение классов HashVector и HashTree, которые я написал в 2003 году, когда мне нужно было моделировать объекты javascript и xml в Java, сохраняя их порядок. Однако я не нашел ни времени, ни необходимости упростить хэш-дерево для сериализации gwt.

Если подумать, как GWT реализует хэш-карту? Я думаю, когда у меня есть время, мне нужно заменить hashmap на faststringmap. Google faststringmap не является общедоступной. Это для частного использования компилятора GWT. Поэтому вы должны скопировать его код и изменить его на общедоступный класс: http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/client/ui/FastStringMap.java

http://jectbd.com/?p=95

Может быть, GWT-компилятор все равно использовал бы его молча - стоит ли мне заняться микроуправлением, если компилятор заменит hashmap на faststringmap?

КСТАТИ

Вы все еще можете искать хэш-дерево, прибегая к помощи "googlecode synthful hashtree".

Hashtree позволяет вам создавать дерево объектов и извлекать ваши объекты, используя путь xpath, подобный точечному соглашению.

hashtree.get("hello.dolly.how.are.you");

Разделитель может быть переопределен, чтобы вы могли хранить или использовать

hashtree.get("hello/dolly/how/are/you");
hashtree.put("hello/dolly/how/are/you", value);
2 голосов
/ 04 марта 2012

A LinkedHashMap сохранит данные в том же порядке, в котором они были вставлены.

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