una sort por ordenar ordenadas ordenada numeros nombres metodo listas lista enlazada datos como atributo alfabeticamente java list map

sort - ordenar datos en una lista java



Solicitud de mapa de lista ordenada en Java (7)

Me preguntaba si hay alguna clase por ahí que implemente las interfaces Map y List en Java.

Tengo una estructura de datos que es principalmente un Map . Asigno cadenas (ID) a la Image s. Pero en una parte específica de mi código, necesito presentar al usuario todas las Images IDed disponibles. La única manera de hacerlo hasta ahora es escribir esto:

for (String id : myMap.keySet()) { // get the image like this "myMap.get(id)" }

Por lo tanto, sería bueno tener una clase que implemente Map y List así que simplemente podría escribir:

for (Image img : myMap) { // the image is img }

¿Alguien sabe de tal implementación?

EDITAR : Después de ver las respuestas (que son todas correctas, aprobadas), ahora me doy cuenta de que también necesitaría que se clasificara el mapa. Cuando digo "ordenado", lo único que quiero decir es que me gustaría que tuviera los valores en un orden específico, uno que podría modificar. Sé que esta no es la pregunta original, pero me di cuenta de que la necesitaba.

EDIT 2 : Parece que estoy indeciso. Lo que necesito es un mapa ordenado, no ordenado. Perdón por la confusión, gente.


Esto le da una colección de los valores almacenados

myMap.values()


Para un Mapa ordenado, mira el LinkedHashMap . Eso mantendrá tus llaves en el orden de inserción.

Si utiliza un SortedMap , mantendrá las claves ordenadas. (El TreeMap es la implementación más común.)

Lo que puedes usar es map.entrySet() . Eso te permitirá iterar sobre el Conjunto de MapEntries.

Echa un vistazo a la javadoc para un poco más de información.


Prueba esto:

for (Image img : myMap.values()) { // the image is img }

Para ver el mapa ordenado, consulte las implementaciones SortedMap . java.util.TreeMap es la opción más utilizada. Si solo necesita un orden de iteración garantizado, puede probar LinkedHashMap . Ofrece iteración en el mismo orden en que se ponen los elementos para mapear. O, opcionalmente, en el último orden de acceso. Si desea mover la tecla (una vez agregada) al final del mapa, debe eliminarla explícitamente y volver a colocarla.


Si necesita sus artículos en un orden específico, LinkedHashMap es su amigo, mantiene los artículos en orden de inserción. TreeMap mantendrá sus artículos en un orden definido por un Comparador que proporcione o un método compareTo de la clave.


Ya tienes un montón de respuestas prácticas. Pero respondiendo directamente a la pregunta ...

Estaba vagando si hay una clase por ahí que implementa las interfaces Map y List en Java.

... vale la pena mencionar que es simplemente imposible. remove(Object) método de remove(Object) es el obstáculo.

En la interfaz del Map su firma es:

V remove(Object key);

Y en la interfaz de la List es:

boolean remove(Object o);


puede utilizar el método Map.values() , que devuelve una Collection .


puede utilizar un java.util.TreeMap que se ordena según el orden natural de sus claves, o por un Comparador proporcionado en el momento de la creación del mapa:

TreeMap<String, Image> mapByName = new TreeMap<String, Image>(new ByNameComparator());

donde ByNameComparator () es un comparador. Alternativamente, puede usar los valores () metond y ordenar usando Collections.sort ():

Collection<Image> images = mapByName.values(); Collections.sort(images, new BySizeComparator());