Bienvenidos sean a este post, hoy sobre una interfaz que extiende a la interfaz Map y nos asegura que las entradas sean ordenadas por clave de manera ascendente, varios metodos pueden lanzar algunas de estas excepciones:

  • NoSuchElementException, cuando no hay items en el mapa invocador
  • ClassCastException, cuando un objeto es incompatible con los objetos del mapa
  • NullPointerException, cuando se intenta usar un objeto null y esto no esta permitido en el mapa

Procedamos a ver algunos metodos disponibles para esta interfaz en el siguiente listado:

  • Comparator comparator(), devuelve el comparador del objeto invocador, si se usa el orden natural este comparator devuelve un valor null
  • Object firstKey(), devuelve la primera clave del mapa invocador
  • SortedMap headMap(Object final), devuelve un mapa ordenado para aquellas entradas menor a la informada en final
  • Object lastKey(), devuelve la ultima clave del mapa invocador
  • SortedMap subMap(Object inicio, Object final), devuelve un mapa conteniendo las entradas entre el rango informado, es decir mayor o igual a inicio y menor a final
  • SortedMap tailMap(Object inicio), devuelve un mapa cuyas entradas son mayor o igual al valor informado en inicio

A continuacion veremos un ejemplo donde podremos analizar como funciona:

TreeMapDemo.java:

import java.util.*;

public class TreeMapDemo
{
        public static void main(String[] args)
        {

                TreeMap tm = new TreeMap();

                tm.put("Martin",new Double(9999.90));
                tm.put("Marta",new Double(11768.11));
                tm.put("Enzo",new Double(9756.99));
                tm.put("Javier",new Double(12667.11));
                tm.put("Ariel",new Double(11999.11));

                Set set = tm.entrySet();

                Iterator i = set.iterator();

                while(i.hasNext())
                {
                        Map.Entry me = (Map.Entry)i.next();
                        System.out.println(me.getKey() + ": "
                                                + me.getValue());
                }
                System.out.println();

                double balance = ((Double)tm.get("Marta")).doubleValue();
                tm.put("Marta", new Double(balance + 1000));
                System.out.println("El nuevo balance de Marta es: "
                                                + tm.get("Marta"));
        }
}

En este ejemplo, primero crearemos un mapa llamada tm, a este mapa le agregaremos cinco datos del tipo clave/valor donde el nombre de la persona sera la clave y un valor con el sueldo de la persona, nuestro siguiente paso sera un objeto de tipo Set y utilizaremos a entrySet() para poder manipular las entradas del set, luego le asignaremos un iterator para poder recuperar las entradas de este mapa, esto lo haremos por medio del while y el metodo hasNext(), donde utilizaremos un Map.Entry, lo hemos visto en este post, para obtener el siguiente elemento y luego lo mostraremos en pantalla hasta que el bucle se termine, es decir que no existan mas elementos, para luego tomar a uno de los elementos del mapa, obtendremos su valor relacionado, a la cual el valor asignado le agregaremos 1000 para finalmente mostrar el valor modificado, probemos de compilarlo y ejecutar el programa para ver su salida:

tinchicus@dbn001vrt:~/programacion/java/codigo$ java TreeMapDemo
Ariel: 11999.11
Enzo: 9756.99
Javier: 12667.11
Marta: 11768.11
Martin: 9999.9

El nuevo balance de Marta es: 12768.11
tinchicus@dbn001vrt:~/programacion/java/codigo$

Como pueden ver tenemos nuestro mapa ordenado de forma natural para luego ver como se incremento el elemento que nosotros informamos.

En resumen, hoy hemos visto como es la interfaz SortedMap, que metodos tiene, como se pueden usar, un ejemplo para ponerlo en practica, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios