SlideShare una empresa de Scribd logo
1 de 56
Descargar para leer sin conexión
Colecciones en Scala
Daniel Gomez
David Valladarez
Emily Arteaga
❏ Introducción
❏ Jerarquía de colecciones.
❏ Traversable
❏ Iterable - Iterator
❏ Colecciones
❏ Tipo de colecciones
Contenido ❏ Secuencias
➢ Listas
➢ Arrays
➢ List Buffeer
➢ Ejemplos de código
➢ Queue
➢ Stacks
❏ Set & Maps
➢ Operaciones Set
➢ Operaciones Map
❏ Bibliografía
Introducción
Las colecciones están presentes en la mayor parte de los programas que
escribimos y todos los lenguajes incluyen un marco de trabajo de colecciones.
Scala no es la excepción y la mayoría de las colecciones que ofrece son
inmutables con muchas facilidades para operaciones de iteración. Estas dos
características de las colecciones usadas correctamente nos conducen a escribir
código conciso y de gran desempeño en las plataformas multicore actuales.
Introducción - Tipos de colecciones
Las colecciones de Scala se distinguen sistemáticamente entre colecciones
mutables o inmutables. En una colección mutable se puede agregar, cambiar o
remover elementos de una colección . Las colecciones inmutables, al contrario,
nunca cambian, puede haber operaciones que simulen ediciones, agregación , o
eliminación, pero estas operaciones en cada caso retornan una nueva colección y
dejarán sin cambiar la original.
Introducción - Importar colecciones
Formas de importar una colección en Scala:
Import scala.collection
Import scala.collection.immutable
Import scala.collection.mutable
Introducción - Importar colecciones
Cualquiera de las formas anteriores, si al llamar a una colección solo se coloca
una palabra sin un prefijo como por ejemplo Set esta se referirá a una colección
inmutable, por lo que para llamar a una colección mutable se necesita instanciarla
de esta manera:
mutable.Set
El último paquete en la jerarquía de colecciones es collection.generic, este paquete
contiene bloques de construcción para implementar colecciones.
Introducción - Alias en Scala
Por conveniencia y retro compatibilidad algunos tipos importantes tienen alias en
el paquete scala, por lo que se puede usar con sus simples nombres sin
necesidad de importar, por ejemplo el tipo Lista puede accederse
alternativamente
scala.collection.immutable.List
scala.List
List
Otros tipos que tienen alias son Traversable, Iterable, Seq,
IndexedSeq, Iterator, Stream, Vector, StringBuilder y Range
Jerarquía de Colecciones
Jerarquía de Colecciones
Lo que denotamos es que todas las
colecciones derivan de la super trait
Iterable de las colecciones mutables e
inmutables (Seq), los set y los maps, la
mayoría de las colecciones que se ofrecen
son inmutables pero como derivan de
Iterable, poseen facilidad de iteración,
dependiendo del uso o aplicación
obtendremos un rendimiento en las
plataformas actuales de desarrollo.
Traversable
Es el tope de la jerarquía de las colecciones de Scala.
Su única operación abstracta es foreach que permite aplicar una operación por
cada elemento de la colección.
Iterable - Iterator
Un iterador tiene muchos de los mismos
métodos que iterable incluídas las de
orden superior pero no pertenecen a la
misma jerarquía, pero se diferencian en
que Iterable puede manejar datos que se
repitan más de una vez y así mismo se
puede usar los métodos Iterable múltiples
ocasiones mientras que Iterator solo una.
Colecciones
● Seq: Es un iterable donde el orden de los
elementos está arreglado con posiciones de
los índices empezando por 0. Indexed Seq
Linear Seq
● Set: Son iterables que no contienen
elementos duplicados. Sorted Set, Bit Set
● Map: Es un iterable en el que cada
elemento es un par (clave, valor)
SortedMap
Tipos de Colecciones
Básicamente existen dos tipos de colecciones: mutables e inmutables, una
colección mutables es factible ingresar, eliminar y modificar elementos de una
colección mientras que las inmutables no se pueden cambiar los valores por
asignación, existen método o funciones que simulan las operaciones
anteriormente mencionadas pero éstas retornan una nueva colección dejando
intacta la antigua.
Secuencias - Listas
Es el tipo más importante a saber dentro de las colecciones, es una estructura de
datos inmutable, Como ventaja podemos indicar que las listas tienen una
estructura recursiva, mientras que los arrays son planos. La inmutabilidad de las
listas permiten desarrollar algoritmos correctos y eficientes porque se va a
necesitar hacer copias de una lista.
Operaciones básicas:
● head: devuelve el primer elemento de la lista.
● tail: devuelve una lista que consta de todos los elementos menos el primero.
● isEmpty: devuelve True si la lista está vacía
Creación de Listas
● Lista Simple
Creación de Listas
● Listas de Listas
Secuencias - Arrays
Éstos permiten que se mantenga una secuencia de elementos y se pueda
acceder a una posición arbitraria, tanto como para obtener un elemento con un
índice de base cero, algo que denota es que éste tipo de colección es mutable.
Los array en Scala están representados en la misma forma que los array en Java,
de esa manera permite utilizar los mismo algoritmos desarrollados en Java y que
devuelva un array, ésto quiere decir que posee los mismo métodos.
Creación de Arreglos
Creación de Arreglos
Método Map
Método Filter
Concatenar dos Arreglos
Agregar Elemento en el Arreglo
Método Contains
Métodos de Arreglos
Secuencias - List Buffers
Un List Buffer es un objeto mutable que ayuda a construir listas de manera más
eficiente cuando se necesitan anexarlas, así mismo proporcionan operaciones de
agregación y anteponer operaciones, así mismo al terminar de construir se puede
invocarla mediante toList en el ListBuffer.
Así una ventaja sería que al usar éste tipo de colección es evitar el potencial del
desbordamiento del stack de memoria, porque se puede crear una la lista
anteponiendo el orden deseado
Creación de ListBuffer
Métodos del
ListBuffer
Concatenar dos ListBuffer
Secuencias - ArrayBuffers
Un ArrayBuffer es como un array con la excepción añadir y eliminar elementos de
al inicio y al final de la secuencia, una desventaja sería que aunque posee todas
las operaciones de los arrays, aunque son un poco más lento debido a una capa
de envase (wrapping) en la ejecución.
Una ventaja es que cuando se crea el ArrayBuffer se debe especificar un
parámetro de tipo, pero no especificar su longitud, ésta colección
automáticamente ajustará el espacio asignado según sea necesario.
Creación ArrayBuffers
Métodos
ArrayBuffer
Secuenciales - Queues
Es el tipo de colección de datos FIFO y en Scala ofrecen variantes mutables e
inmutables de cola. Se pueden agregar valores a una cola inmutable con enqueue,
de igual manera se puede agregar múltiples valores en la misma línea, para
removar se usa dequeue, pero al momento de usar éste método en una cola
inmutable, éste devuelve el elemento a la cabeza de la cola y una tupla que el
resto de elementos eliminados.
En la cola mutable se puede usar de forma similar, solo que en vez de usar
enqueue, usamos += y ++= para agregar valores y para descolar dequeue solo
remueve el elemento a la cabeza de ésta.
Métodos
Secuenciales:
Queue
Secuenciales - Stack
De la misma forma que en las Colas, en las pilas existen versiones mutables e
inmutables, posee los métodos principales push y pop.
El comando push permite ingresar valores a la cola, top devuelve el valor tope de
la cola y pop eliminar ese valo
Métodos
Secuenciales:
Stack
Set & Maps
Scala proporciona tanto mutables como inmutables versiones de Set y Maps y su
jerarquía es la siguiente:
Set & Maps
Por defecto se escribe “Set” o “Map” y se obtiene un objeto inmutable. Por otro
lado, si se desea que sea mutable se tiene que hacer una importación explícita.
Scala proporciona el acceso mediante el objeto Predef.
Set
La característica clave de los conjuntos es que se garantiza como máximo un
valor por cada objeto
Set - Operaciones:
Métodos
Set
Crear un Conjunto - Set
Map
Para crear un Map, hay que tener en cuenta lo siguiente:
Se debe especificar dos cosas, el primer es la clave del map y el segundo son los
valores, osea Map[String, int], , así mismo la lectura de un map es similar a
la de una matriz.
Map - Operaciones
Métodos
Map
Creación de un Map(Diccionario)
Contains
Size
Keys
Values
Resumen: Instanciar una colección en Scala
Para instanciar cada tipo de colección puede ser creada por la misma sintaxis,
escribiendo el nombre de la colección seguido de sus elementos:
Traversable(1, 2, 3)
Iterable("x", "y", "z")
Map("x" -> 24, "y" -> 25, "z" -> 26)
Set(Color.red, Color.green, Color.blue)
SortedSet("hello", "world")
Buffer(x, y, z)
IndexedSeq(1.0, 2.0)
LinearSeq(a, b, c)
El mismo principio se aplica para implementaciones de colecciones específicas,
como:
List(1, 2, 3)
HashMap("x" -> 24, "y" -> 25, "z" -> 26)
Resumen: Instanciar una colección en Scala
Libro:
Programming in Scala
Martin Odersky
Referencias de internet:
http://www.scala-lang.org/api/2.12.0/scala/collection/mutable/Queue.html
https://www.tutorialspoint.com/scala/scala_sets.htm
http://docs.scala-lang.org/overviews/collections/arrays.html
http://docs.scala-lang.org/overviews/collections/maps.html
Referencias bibliográficas
¡¡ Gracias !!

Más contenido relacionado

La actualidad más candente (20)

Chapter 13 - Recursion
Chapter 13 - RecursionChapter 13 - Recursion
Chapter 13 - Recursion
 
sets and maps
 sets and maps sets and maps
sets and maps
 
ITFT-Constants, variables and data types in java
ITFT-Constants, variables and data types in javaITFT-Constants, variables and data types in java
ITFT-Constants, variables and data types in java
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Introduction to Java Strings, By Kavita Ganesan
Introduction to Java Strings, By Kavita GanesanIntroduction to Java Strings, By Kavita Ganesan
Introduction to Java Strings, By Kavita Ganesan
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 
Alice 14
Alice 14Alice 14
Alice 14
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Java awt
Java awtJava awt
Java awt
 
Les03 Single Row Function
Les03 Single Row FunctionLes03 Single Row Function
Les03 Single Row Function
 
Strings in c++
Strings in c++Strings in c++
Strings in c++
 
JavaScript - Chapter 10 - Strings and Arrays
 JavaScript - Chapter 10 - Strings and Arrays JavaScript - Chapter 10 - Strings and Arrays
JavaScript - Chapter 10 - Strings and Arrays
 
Python programming : Strings
Python programming : StringsPython programming : Strings
Python programming : Strings
 
Fundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacionalFundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacional
 
Arraylist
ArraylistArraylist
Arraylist
 
Java Strings
Java StringsJava Strings
Java Strings
 
Estructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de BúsquedaEstructura de Datos - Unidad VI: Métodos de Búsqueda
Estructura de Datos - Unidad VI: Métodos de Búsqueda
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Arreglos Java
Arreglos JavaArreglos Java
Arreglos Java
 

Destacado (10)

Colecciones en Python
Colecciones en PythonColecciones en Python
Colecciones en Python
 
Algoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivosAlgoritmos de ordenamiento externo sobre archivos
Algoritmos de ordenamiento externo sobre archivos
 
Codificación de Huffman
Codificación de Huffman Codificación de Huffman
Codificación de Huffman
 
Aborto
AbortoAborto
Aborto
 
Sistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UCSistema de gestión de base de datos SQL UC
Sistema de gestión de base de datos SQL UC
 
Amenaza de aborto
Amenaza de abortoAmenaza de aborto
Amenaza de aborto
 
Amenaza de aborto
Amenaza de abortoAmenaza de aborto
Amenaza de aborto
 
Hemorragias de la Segunda Mitad del Embarazo
Hemorragias de la Segunda Mitad del EmbarazoHemorragias de la Segunda Mitad del Embarazo
Hemorragias de la Segunda Mitad del Embarazo
 
Amenaza de aborto
Amenaza de abortoAmenaza de aborto
Amenaza de aborto
 
Amenaza de aborto
Amenaza de abortoAmenaza de aborto
Amenaza de aborto
 

Similar a Colecciones en Scala

Scala collections
Scala collectionsScala collections
Scala collectionscrissbal94
 
Listas c#
Listas c#Listas c#
Listas c#rezzaca
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)Oscar V
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc X
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfmichaelsilva2k20
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkSoftware Guru
 
Estructura datos unidad-2_y_3
Estructura datos unidad-2_y_3Estructura datos unidad-2_y_3
Estructura datos unidad-2_y_3marioUitzil
 
Stl bliblioteca de plantillas estandar
Stl bliblioteca de plantillas estandarStl bliblioteca de plantillas estandar
Stl bliblioteca de plantillas estandarAnabel Duarte
 

Similar a Colecciones en Scala (20)

Colecciones en Scala
Colecciones en ScalaColecciones en Scala
Colecciones en Scala
 
Scala collections
Scala collectionsScala collections
Scala collections
 
Unidad de listas
Unidad de listasUnidad de listas
Unidad de listas
 
Colecciones en java
Colecciones en javaColecciones en java
Colecciones en java
 
Colecciones
ColeccionesColecciones
Colecciones
 
Biblioteca
BibliotecaBiblioteca
Biblioteca
 
Cassandra
CassandraCassandra
Cassandra
 
Listas c#
Listas c#Listas c#
Listas c#
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
 
Arrays
ArraysArrays
Arrays
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdf
 
Listas
ListasListas
Listas
 
Matlab2
Matlab2Matlab2
Matlab2
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 
Estructura datos unidad-2_y_3
Estructura datos unidad-2_y_3Estructura datos unidad-2_y_3
Estructura datos unidad-2_y_3
 
Unidad 2 & 3 estructura datos
Unidad 2 & 3 estructura datosUnidad 2 & 3 estructura datos
Unidad 2 & 3 estructura datos
 
Stl bliblioteca de plantillas estandar
Stl bliblioteca de plantillas estandarStl bliblioteca de plantillas estandar
Stl bliblioteca de plantillas estandar
 

Más de Daniel Gomez Jaramillo

Más de Daniel Gomez Jaramillo (12)

DotVVM Fundamentals
DotVVM FundamentalsDotVVM Fundamentals
DotVVM Fundamentals
 
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...Servicios de base de datos multimodelo  NoSQL con Azure CosmosDB y aplicación...
Servicios de base de datos multimodelo NoSQL con Azure CosmosDB y aplicación...
 
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
Microsoft Cognitive Services y el lado humano de las aplicaciones inteligentes.
 
HTML y Alojamiento en Azure.
HTML y Alojamiento en Azure. HTML y Alojamiento en Azure.
HTML y Alojamiento en Azure.
 
Internet y seguridad en redes
Internet y seguridad en redesInternet y seguridad en redes
Internet y seguridad en redes
 
Reproductor de música DG Player
Reproductor de música DG PlayerReproductor de música DG Player
Reproductor de música DG Player
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
Fuerzas de rozamiento
Fuerzas de rozamientoFuerzas de rozamiento
Fuerzas de rozamiento
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Programación dinámica
Programación dinámicaProgramación dinámica
Programación dinámica
 

Último

Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestajeffsalazarpuente
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaXjoseantonio01jossed
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfyoseka196
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones025ca20
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptxguillermosantana15
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdfEdwinAlexanderSnchez2
 

Último (20)

Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Diapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuestaDiapositiva de Topografía Nivelación simple y compuesta
Diapositiva de Topografía Nivelación simple y compuesta
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctricaProyecto de iluminación "guia" para proyectos de ingeniería eléctrica
Proyecto de iluminación "guia" para proyectos de ingeniería eléctrica
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
Calavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdfCalavera calculo de estructuras de cimentacion.pdf
Calavera calculo de estructuras de cimentacion.pdf
 
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Propositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicacionesPropositos del comportamiento de fases y aplicaciones
Propositos del comportamiento de fases y aplicaciones
 
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
¿QUE SON LOS AGENTES FISICOS Y QUE CUIDADOS TENER.pptx
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf183045401-Terminal-Terrestre-de-Trujillo.pdf
183045401-Terminal-Terrestre-de-Trujillo.pdf
 

Colecciones en Scala

  • 1. Colecciones en Scala Daniel Gomez David Valladarez Emily Arteaga
  • 2. ❏ Introducción ❏ Jerarquía de colecciones. ❏ Traversable ❏ Iterable - Iterator ❏ Colecciones ❏ Tipo de colecciones Contenido ❏ Secuencias ➢ Listas ➢ Arrays ➢ List Buffeer ➢ Ejemplos de código ➢ Queue ➢ Stacks ❏ Set & Maps ➢ Operaciones Set ➢ Operaciones Map ❏ Bibliografía
  • 3. Introducción Las colecciones están presentes en la mayor parte de los programas que escribimos y todos los lenguajes incluyen un marco de trabajo de colecciones. Scala no es la excepción y la mayoría de las colecciones que ofrece son inmutables con muchas facilidades para operaciones de iteración. Estas dos características de las colecciones usadas correctamente nos conducen a escribir código conciso y de gran desempeño en las plataformas multicore actuales.
  • 4. Introducción - Tipos de colecciones Las colecciones de Scala se distinguen sistemáticamente entre colecciones mutables o inmutables. En una colección mutable se puede agregar, cambiar o remover elementos de una colección . Las colecciones inmutables, al contrario, nunca cambian, puede haber operaciones que simulen ediciones, agregación , o eliminación, pero estas operaciones en cada caso retornan una nueva colección y dejarán sin cambiar la original.
  • 5. Introducción - Importar colecciones Formas de importar una colección en Scala: Import scala.collection Import scala.collection.immutable Import scala.collection.mutable
  • 6. Introducción - Importar colecciones Cualquiera de las formas anteriores, si al llamar a una colección solo se coloca una palabra sin un prefijo como por ejemplo Set esta se referirá a una colección inmutable, por lo que para llamar a una colección mutable se necesita instanciarla de esta manera: mutable.Set El último paquete en la jerarquía de colecciones es collection.generic, este paquete contiene bloques de construcción para implementar colecciones.
  • 7. Introducción - Alias en Scala Por conveniencia y retro compatibilidad algunos tipos importantes tienen alias en el paquete scala, por lo que se puede usar con sus simples nombres sin necesidad de importar, por ejemplo el tipo Lista puede accederse alternativamente scala.collection.immutable.List scala.List List Otros tipos que tienen alias son Traversable, Iterable, Seq, IndexedSeq, Iterator, Stream, Vector, StringBuilder y Range
  • 9. Jerarquía de Colecciones Lo que denotamos es que todas las colecciones derivan de la super trait Iterable de las colecciones mutables e inmutables (Seq), los set y los maps, la mayoría de las colecciones que se ofrecen son inmutables pero como derivan de Iterable, poseen facilidad de iteración, dependiendo del uso o aplicación obtendremos un rendimiento en las plataformas actuales de desarrollo.
  • 10. Traversable Es el tope de la jerarquía de las colecciones de Scala. Su única operación abstracta es foreach que permite aplicar una operación por cada elemento de la colección.
  • 11. Iterable - Iterator Un iterador tiene muchos de los mismos métodos que iterable incluídas las de orden superior pero no pertenecen a la misma jerarquía, pero se diferencian en que Iterable puede manejar datos que se repitan más de una vez y así mismo se puede usar los métodos Iterable múltiples ocasiones mientras que Iterator solo una.
  • 12. Colecciones ● Seq: Es un iterable donde el orden de los elementos está arreglado con posiciones de los índices empezando por 0. Indexed Seq Linear Seq ● Set: Son iterables que no contienen elementos duplicados. Sorted Set, Bit Set ● Map: Es un iterable en el que cada elemento es un par (clave, valor) SortedMap
  • 13. Tipos de Colecciones Básicamente existen dos tipos de colecciones: mutables e inmutables, una colección mutables es factible ingresar, eliminar y modificar elementos de una colección mientras que las inmutables no se pueden cambiar los valores por asignación, existen método o funciones que simulan las operaciones anteriormente mencionadas pero éstas retornan una nueva colección dejando intacta la antigua.
  • 14. Secuencias - Listas Es el tipo más importante a saber dentro de las colecciones, es una estructura de datos inmutable, Como ventaja podemos indicar que las listas tienen una estructura recursiva, mientras que los arrays son planos. La inmutabilidad de las listas permiten desarrollar algoritmos correctos y eficientes porque se va a necesitar hacer copias de una lista. Operaciones básicas: ● head: devuelve el primer elemento de la lista. ● tail: devuelve una lista que consta de todos los elementos menos el primero. ● isEmpty: devuelve True si la lista está vacía
  • 15. Creación de Listas ● Lista Simple
  • 16. Creación de Listas ● Listas de Listas
  • 17. Secuencias - Arrays Éstos permiten que se mantenga una secuencia de elementos y se pueda acceder a una posición arbitraria, tanto como para obtener un elemento con un índice de base cero, algo que denota es que éste tipo de colección es mutable. Los array en Scala están representados en la misma forma que los array en Java, de esa manera permite utilizar los mismo algoritmos desarrollados en Java y que devuelva un array, ésto quiere decir que posee los mismo métodos.
  • 23. Agregar Elemento en el Arreglo
  • 26. Secuencias - List Buffers Un List Buffer es un objeto mutable que ayuda a construir listas de manera más eficiente cuando se necesitan anexarlas, así mismo proporcionan operaciones de agregación y anteponer operaciones, así mismo al terminar de construir se puede invocarla mediante toList en el ListBuffer. Así una ventaja sería que al usar éste tipo de colección es evitar el potencial del desbordamiento del stack de memoria, porque se puede crear una la lista anteponiendo el orden deseado
  • 30. Secuencias - ArrayBuffers Un ArrayBuffer es como un array con la excepción añadir y eliminar elementos de al inicio y al final de la secuencia, una desventaja sería que aunque posee todas las operaciones de los arrays, aunque son un poco más lento debido a una capa de envase (wrapping) en la ejecución. Una ventaja es que cuando se crea el ArrayBuffer se debe especificar un parámetro de tipo, pero no especificar su longitud, ésta colección automáticamente ajustará el espacio asignado según sea necesario.
  • 33. Secuenciales - Queues Es el tipo de colección de datos FIFO y en Scala ofrecen variantes mutables e inmutables de cola. Se pueden agregar valores a una cola inmutable con enqueue, de igual manera se puede agregar múltiples valores en la misma línea, para removar se usa dequeue, pero al momento de usar éste método en una cola inmutable, éste devuelve el elemento a la cabeza de la cola y una tupla que el resto de elementos eliminados. En la cola mutable se puede usar de forma similar, solo que en vez de usar enqueue, usamos += y ++= para agregar valores y para descolar dequeue solo remueve el elemento a la cabeza de ésta.
  • 35.
  • 36. Secuenciales - Stack De la misma forma que en las Colas, en las pilas existen versiones mutables e inmutables, posee los métodos principales push y pop. El comando push permite ingresar valores a la cola, top devuelve el valor tope de la cola y pop eliminar ese valo
  • 38.
  • 39. Set & Maps Scala proporciona tanto mutables como inmutables versiones de Set y Maps y su jerarquía es la siguiente:
  • 40. Set & Maps Por defecto se escribe “Set” o “Map” y se obtiene un objeto inmutable. Por otro lado, si se desea que sea mutable se tiene que hacer una importación explícita. Scala proporciona el acceso mediante el objeto Predef.
  • 41. Set La característica clave de los conjuntos es que se garantiza como máximo un valor por cada objeto
  • 45. Map Para crear un Map, hay que tener en cuenta lo siguiente: Se debe especificar dos cosas, el primer es la clave del map y el segundo son los valores, osea Map[String, int], , así mismo la lectura de un map es similar a la de una matriz.
  • 48. Creación de un Map(Diccionario)
  • 50. Size
  • 51. Keys
  • 53. Resumen: Instanciar una colección en Scala Para instanciar cada tipo de colección puede ser creada por la misma sintaxis, escribiendo el nombre de la colección seguido de sus elementos: Traversable(1, 2, 3) Iterable("x", "y", "z") Map("x" -> 24, "y" -> 25, "z" -> 26) Set(Color.red, Color.green, Color.blue) SortedSet("hello", "world") Buffer(x, y, z) IndexedSeq(1.0, 2.0) LinearSeq(a, b, c)
  • 54. El mismo principio se aplica para implementaciones de colecciones específicas, como: List(1, 2, 3) HashMap("x" -> 24, "y" -> 25, "z" -> 26) Resumen: Instanciar una colección en Scala
  • 55. Libro: Programming in Scala Martin Odersky Referencias de internet: http://www.scala-lang.org/api/2.12.0/scala/collection/mutable/Queue.html https://www.tutorialspoint.com/scala/scala_sets.htm http://docs.scala-lang.org/overviews/collections/arrays.html http://docs.scala-lang.org/overviews/collections/maps.html Referencias bibliográficas