El documento habla sobre las colecciones en Java. Explica que las colecciones son agrupaciones de objetos relacionados como listas, conjuntos y mapas. Describe los tres tipos generales de colecciones y cómo se usan las interfaces Set, List y Map. También cubre el uso de las clases Array, Collections, Comparable y Comparator para trabajar con arrays y colecciones de objetos.
2. INTRODUCCIÓN
• Java dispone de un conjunto de clases para la agrupación de objetos llamados
Colecciones
• La organización de objetos es de forma particular como un mapa, una lista, un
conjunto, entre otros.
• Son de importancia debido a la facilidad en el diseño y construcción de aplicaciones
basadas en estructuras de datos
3. 1. COLECCIONES EN JAVA
• Las colecciones son agrupaciones de objetos relacionados que forman una única
entidad, como por ejemplo: el array, el vector, la matriz, etc.
• Incluyen: clases contenedoras para almacenar objetos, Iteradores para el acceso y
algoritmos para la manipulación de los objetos
4.
5. 1.1. TIPOS DE COLECCIONES
• Existen 3 tipos generales de colecciones:
• Conjuntos
• Listas
• Mapas
• Los interfaces Set, List y Map, describen las características generales de estos.
6. • El diseño de estas colecciones tuvo muy en cuenta los problemas de seguridad que
pudieran surgir con la ejecución de múltiples tareas
• Si varios hilos acceden a una de esas estructuras garantiza que los accesos estén
sincronizados
• La declaración de métodos de la clase Stack, todos ellos con el comportamiento de
sincronización son:
• Desde Java 2, se puede observar la declaración de métodos de la colección ArrayList
7. 2. ARRAYS Y COLLECTIONS
• La clase Array agrupa algoritmos útiles que se aplican, en general a los Arrays de los
tipos primitivos
• Collections también es una clase, pero de métodos static que implementan
algoritmos aplicados a todo tipo de colecciones
• Vector, colección histórica, diseñada para guardar objetos de cualquier tipo.
8. 2.1. CLASE ARRAY
• Java incorpora esta clase para disponer de métodos que trabajen con arreglos de
cualquier tipo
• Estos métodos implementan algoritmos de búsqueda, ordenación y de asignación
de un valor al array completo
• No se pueden crear objetos de la clase Arrays ya que su constructor es privado
9. ORDENACIÓN DE ARRAYS
• El método de ordenación short(), esta sobrecargado, de tal forma que puede
ordenar un array de cualquier tipo primitivo
• El método implementa un algoritmo de ordenación QuickSort que asegura una
eficiencia n log(n)
10.
11. BÚSQUEDA DE UNA CLAVE
• Se lo realiza sobre un array ordenado
• La clase array dispone del método static binarySearch(), el cual se usa para realizar
búsquedas dentro del array
• EL método devuelve la posición del elemento
• El método implementa el algoritmo de búsqueda binaria con una eficiencia de
log(n)
12. ASIGNACIÓN DE UN ELEMENTO
• Otra utilidad de la clase array, es el método fill()
• El método permite realizar la asignación de un elemento a todas las posiciones o
bien a un rango del array
13. 2.2. CLASE COLLECTIONS
• Diseñada para trabajar con colecciones List, Map, Set; en general sobre cualquier
Collection
• Se encuentra en el paquete java.útil y agrupa métodos static
• Implementan algoritmos genéricos de ordenación, búsqueda, máximo y mínimo
14. ORDENACIÓN Y BÚSQUEDA
• Los métodos de ordenación se aplican a una lista cuyos elementos implementan la
interfaz Comparable
• Hay una sobrecarga de métodos para realizar la comparación con la interfaz
Comparator
15. MÁXIMO Y MÍNIMO
• Los métodos max(), min(), devuelven el máximo y el mínimo respectivos de una
colección
• Para su operación, los elementos deben implementar la interfaz Comparable y ser
mutuamente comprables
16. SINCRONIZACIÓN Y CONVERSIÓN A
SOLO LECTURA
• Para la sincronización, Collections dispone de método que se aplican a cada tipo de
colección
• Los métodos de conversión a solo lectura levantan una excepción
UnsupportedOperationException a las operación de añadir y remover
17. UTILIDADES
• La clase Collections, dispone de métodos útiles para ciertos procesos algorítmicos
• nCopies() crea una lista de n copias de un elemento
• copy() crea una lista copia de otra
• fill() rellena todos los elementos de una lista con un objeto
• reverse() invierte la posición de los elementos de una lista
• shuffle() reordena aleatoriamente los elementos de una lista
18.
19. 3. COMPARACIÓN DE OBJETOS:
COMPARABLE Y COMPARATOR
• Numerosas operaciones con colecciones exigen que sus elementos sean
comparables
• Determinar si un elemento es menor, igual o mayor que otro
• Implementando la interfaz Comparable, o bien la interfaz Comparator
20. 3.1. COMPARABLE
• La interfaz Comparable se utiliza para establecer un orden natural entre los objetos de una
misma clase
• Proviene del paquete java.lang
• Si el compareTo() devuelve un valor negativo, el objeto es menor. Si el valor es 0, son iguales
y si devuelve un valor positivo, el objeto es mayor, todos esos comparados al paso de
argumento
• Todas las clases que representan a tipos primitivos: Integer, Double, etc, y la clase String
implementan la interfaz Comparable. La implementación de compareTo() en String distingue
mayúsculas de minúsculas
21. 3.2. COMPARATOR
• Algunos métodos de ordenación y búsqueda de objetos, usan la interfaz
comparator, el cual determina el orden natural entre dos elementos
• Su interfaz se encuentra en el paquete java.útil
• El método compare() relaciona dos objetos sin necesidad que sean del mismo tipo.
• Si ob1 es menor, devuelve un valor negativo, cero si son iguales y un valor positivo
si ob1 es mayor que ob2
22. BIBLIOGRAFÍA
• Joyanes, L. and Zahonero, I. (2008). Estructura de Datos en Java. 1st ed. Madrid: Mc
Graw Hill, pp.488 - 498.
• Plaza, A. and Ortiz, M. ed., (2013). Programación Orientada a Objetos y UML. 1st ed.
Cuenca: Abya-Yala, pp.165 - 170.