Skip to main content

Colecciones

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


r8vnhill/collections-kt
Si quieres seguir el código del tutorial puedes comenzar desde este punto

Si tienes gh instalado, puedes obtener el código haciendo:

gh repo clone r8vnhill/collections-kt
cd collections-kt || exit
git checkout base

Si quieres tener tu propia copia del código, puedes hacer un fork del repositorio y clonarlo desde tu cuenta de GitHub.

gh repo fork r8vnhill/collections-kt
cd collections-kt || exit
git checkout --track origin/base
Cambia la propiedad group en gradle.properties
Recuerda cambiar la propiedad .group en el archivo gradle.properties por tu nombre de dominio.

En el desarrollo de software, una colección es una estructura de datos que agrupa un número variable de elementos (posiblemente cero) de un mismo tipo o de sus subtipos bajo una sola entidad. Esto permite manipularlos y acceder a ellos de manera organizada y eficiente, facilitando operaciones como búsqueda, filtrado, agregación, inserción, eliminación y ordenación. Los elementos de una colección representan objetos relacionados dentro de un problema. Por ejemplo, una colección de estudiantes en un departamento puede utilizarse para calcular su edad promedio.

Las colecciones son una herramienta esencial en muchos lenguajes de programación, ya que permiten estructurar, organizar y manipular datos de manera eficiente.

Antes de profundizar en los principales tipos de colecciones, es importante destacar que los arrays no se consideran colecciones en Kotlin. Aunque permiten almacenar múltiples elementos y acceder a ellos mediante índices, los arrays tienen un tamaño fijo y no implementan la interfaz Collection. En contraste, las colecciones en Kotlin ofrecen mayor flexibilidad, permitiendo estructuras tanto inmutables como mutables, además de proporcionar un conjunto de operaciones optimizadas para la manipulación de datos.

Kotlin ofrece distintos tipos de colecciones, cada una diseñada para escenarios específicos. Entre las más comunes se encuentran las listas, los conjuntos y los diccionarios, cada uno con características y ventajas particulares según el problema que se desee resolver.

  • Listas: Estructura ordenada en la que cada elemento ocupa una posición específica, accesible mediante un índice. Permiten elementos duplicados y su orden es relevante. Un ejemplo es un número de teléfono, donde la secuencia de dígitos es crucial y pueden repetirse valores.
  • Conjuntos: Agrupación de elementos únicos sin un orden específico. No permiten duplicados y reflejan el concepto matemático de conjunto. Por ejemplo, los números en un boleto de lotería forman un conjunto, ya que cada número es único y su orden no importa.
  • Diccionarios: Colección de pares clave-valor donde cada clave es única y se asocia a un solo valor, aunque los valores pueden repetirse. Son ideales para representar relaciones lógicas, como un identificador de empleado y su cargo.

Cada tipo de colección tiene sus propias propiedades, ventajas y desventajas, dependiendo del problema a resolver y de las operaciones más frecuentes que se requieran.

📌 Contenidos de la unidad

En esta unidad, exploraremos cómo crear, manipular y seleccionar colecciones adecuadas en el contexto del desarrollo de bibliotecas de software. Analizaremos los distintos tipos de colecciones y sus características, así como las operaciones más comunes que se pueden realizar sobre ellas. Además, abordaremos conceptos clave que permiten mejorar el diseño y uso eficiente de colecciones en nuestras implementaciones.

Los temas que cubriremos incluyen:

  • Iterator Pattern 🌀: Será la base sobre la que construiremos las colecciones. Veremos cómo este patrón permite recorrer elementos sin exponer su estructura interna, facilitando la abstracción y el diseño flexible de estructuras de datos.
  • Colecciones inmutables 🔒: Exploraremos cómo definir colecciones que no pueden modificarse después de su creación, garantizando mayor seguridad y predictibilidad en su uso.
  • Colecciones mutables ✏️: Analizaremos estructuras que permiten agregar, eliminar y modificar elementos, brindando flexibilidad en la manipulación de datos.
  • Colecciones perezosas 🛑➡️⏳: Estudiaremos cómo aprovechar la evaluación diferida para mejorar la eficiencia y el rendimiento en el manejo de grandes volúmenes de datos.
  • Operaciones comunes sobre colecciones ⚙️: Aprenderemos cómo realizar filtrados, transformaciones, búsquedas y reducciones utilizando funciones optimizadas y patrones adecuados.

En esta unidad, nos basaremos en las estructuras provistas por la Kotlin Standard Library, que ofrece interfaces, clases y funciones genéricas para crear, poblar y gestionar colecciones de cualquier tipo. Estas herramientas nos permitirán construir implementaciones eficientes y reutilizables dentro del desarrollo de bibliotecas de software.

Al finalizar esta unidad, comprenderás cómo utilizar y diseñar colecciones eficientes, basadas en principios sólidos, para aplicarlas en la construcción de bibliotecas de software reutilizables y escalables.

Bibliografías Recomendadas

Bibliografías Adicionales

  • 📚 "Chapter 9. Collections: Get Organized". (2019). Dawn Griffiths & David Griffiths, en Head First Kotlin, (pp. 439-502.) O’Reilly.
  • 📹 "Kotlin Collections Overview." Kotlin by JetBrains, https://www.youtube.com/watch?v=F8jj7e-_jFA