PRO - Colecciones

per Victor Carceler darrera modificació 2020-04-06T12:06:42+01:00
  1. El framework de colecciones en java distingue tres conceptos: interfaces, implementaciones y algoritmos. ¿A qué se refieren estos conceptos?
  2. Describa brevemente la función de las interfaces Collection, Set, List, Queue y Map.
  3. Escriba el programa PruebaConjuntos de manera que:
  • Se creen tres conjuntos diferentes: c1 será un HashSet, c2 será un TreeSet y c3 será un LinkedHashSet.
  • Se guarde en cada uno de los tres conjuntos las cadenas que se han recibido como argumentos al ejecutar el programa
  • Para cada conjunto se imprimirá en pantalla: el nombre del conjunto, el número de elementos que contiene y los elementos. Para recorrer los conjuntos utilice las dos formulas que conoce: iterador y bucle for abreviado.
  • Observe las particularidades de cada implementación
  • ¿qué ocurre si en la cadena de argumentos hay cadenas repetidas?
  • Modifique el programa anterior para que se inserte un número elevado de elementos en cada conjunto midiendo el tiempo que tarda la operación en realizarse en función de la implementación de conjunto utilizada. Los elementos a insertar tendrán la forma "Elemento-"+n donde n será una variable entera que se irá incrementando. Para medir el tiempo que ha transcurrido en la operación de carga de elementos utilice el método System.currentTimeMillis() que representa la hora actual en milisegundos.
  • Escriba el programa PruebaListas de manera que:
    • Se creen tres listas diferentes: l1 será una ArrayList, l2 será una LinkedList y l3 será de la clase Vector
    • Se guarde en cada uno de las tres listas las cadenas que se han recibido como argumentos al ejecutar el programa
    • Para cada lista se imprimirá en pantalla: el nombre de la lista, el número de elementos que contiene y los elementos. Para recorrer las listas utilice: el iterador simple, el iterador propio de las listas y el bucle for abreviado.
    • ¿Observa alguna diferencia en el funcionamiento de las diferentes implementaciones?
    • ¿Qué ocurre si en la cadena de argumentos hay cadenas repetidas?
    • Utilice los algoritmos sort, shuffle, reverse y fill sobre alguna de las listas.
  • Modifique el programa anterior tal y como describe el punto 4 para que se añada una gran cantidad de elementos a las listas y se pueda valorar la diferencia de rendimiento de las mismas. ¿Existe diferencia de rendimiento entre añadir los elementos al final de la lista con el método add(E element) o en la posición inicial con el método add(0, E element)?
  • Escriba el programa PruebaQueue de manera que:
    • Se creen las siguientes estructuras de datos: una pila p1 que será instancia de ArrayDeque y una cola c1 que será instancia de LinkedList
    • Podría utilizarse la clase LinkedList como si fuése una pila? Podría utilizarse la clase ArrayDeque como si fuése una cola ? ¿Porqué?
    • Se guarde en p1 y en c1 cada una de las cadenas que se han recibido como argumentos al ejecutar el programa
    • Para p1 y c1 se imprimirá en pantalla: el nombre de la estructura de datos, el número de elementos que contiene y dichos elementos. Para introducir y sacar elementos utilice los métodos que corresponden al comportamiento de pila o de cola según corresponda.
    • ¿Qué método permite obtener el elemento que se sacará de la estructura de datos pero sin eliminarlo de dicha estructura?
    • ¿Qué ocurre si en la cadena de argumentos hay cadenas repetidas?
  • Escriba el programa PruebaMap de manera que se procese la cadena de argumentos y se presente en la salida la frecuencia de uso de cada uno de los argumentos (sin repeticiones). ¿Qué diferencia observa entre un HashMap, un LinkedHashMap y un TreeMap?