Как вы и я обнаружили, 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);