2012-03-04 21 views
9

Necesito usar Maps en Java para una aplicación de Android. Pero el problema es que la lista se ordena automáticamente. ¿Cómo uso Maps para obtener los datos en el mismo orden en que he insertado los datos?Mapas (colección) que mantienen la inserción Orden en java

+0

podría ser prudente para cambiar el nombre del título para reflejar mejor el hecho de que usted está interesado en un mapa que mantiene la inserción orden –

+0

¿Qué lista se ordena automáticamente? ¿Es eso un problema? o es parte de su problema * declaración? * La pregunta no está clara. – EJP

Respuesta

18

Para este propósito, debe usar LinkedHashMap. Visite Android Docs y Java Docs para obtener más información.

5

El LinkedHashMap mantiene el orden de inserción.

+1

No solo eso, tiene un gancho fácil para construir una memoria caché. Muy agradable. – Argyle

2

Como usted y yo hemos descubierto, LinkedHashMap no es muy útil. (¿Cuál es el punto de su existencia, de todos modos?)

Tengo una lista ordenada (semánticamente, creo que debería haber sido llamado hashedlist)

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

Tiene un ArrayList y un HashMap. El arraylist almacena la clave.

A hashlist.put (clave, valor) realizaría

  • un map.put (clave, valor)
  • , así como un list.add (clave)

A hashlist.get (int position) realizaría - un map.get (list.get (position))

Esto es una simplificación de las clases HashVector y HashTree que escribí en 2003 cuando necesitaba modelar javascript y objetos xml en Java, conservando su orden. Sin embargo, no encontré el tiempo ni la necesidad de simplificar el hashtree para la serialización de gwt.

Pensándolo bien, ¿cómo implementa GWT un hashmap? Creo que cuando tenga tiempo, necesito reemplazar el hashmap con faststringmap. Google's faststringmap no es público. Es para uso privado del compilador GWT. Así que hay que copiar el código y convertirlo en una clase pública: 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

puede ser, GWT compilador habría utilizado silencio de todos modos - me molesto microgestionar el compilador reemplazar HashMap con faststringmap?

Por cierto,

Aún se podía buscar la hashtree buscando en Google "googlecode synthful hashtree".

El Hashtree le permite crear un árbol de objetos y le permite recuperar sus objetos utilizando una convención de puntos xpath como ruta de acceso.

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

El separador podría respecified de manera que se podría almacenar o conseguir usando

hashtree.get("hello/dolly/how/are/you"); 
hashtree.put("hello/dolly/how/are/you", value); 
+1

Parece que no entiende el propósito de LinkedHashMap, ¿qué espera de él? –

+0

Realmente curioso, ¿qué aspecto de un LinkedHashMap lo hace inadecuado para el propósito del PO? –

+0

linkedhashmap.insert (6, clave, valor)? linkedhashmap.remove (7)? linkedhashmap.put (20, clave, valor)? Parece que no entiendo el propósito de MS Windows cuando podría usar Linux. –

Cuestiones relacionadas