SlideShare una empresa de Scribd logo
Colecciones en Scala
Nombre: André Jaramillo Placencia
Docente: Ing. Magali Mejía
Índice
● Introducción
● Jerarquía de colecciones.
● Iterable - Iterator
● Colecciones
● Tipo de colecciones
● Secuencias
○ Listas
○ Arrays
○ List Buffeer
○ Ejemplos de código
○ Queue
○ Stacks
Índice
● Set & Maps
○ Operaciones Set
○ Operaciones Map
● Bibliografía
Introducción
Tendremos una visión general sobre de cómo
las estructuras de datos se relacionan entre sí
la jerarquía de colecciones (herencia).
El uso de las colecciones o estructuras se basa
en la forma en que deseemos almacenar los
datos para su posterior uso, conocer sus
ventajas, desventajas, aplicación y requisitos
de entrada.
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.
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
Listas: Es el tipo más importante a saber dentro de las colecciones, es una estructura
de datos inmutable, Como ventaja podemos indica 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ásica:
● 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
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
devuelvan un array, ésto quiere decir que posee los mismo métodos.
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
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.
Ejemplos de Código
● Listas literales
val fruit = List("apples", "oranges", "pears")
val nums = List(1, 2, 3, 4)
val diag3 =
List(
List(1, 0, 0),
List(0, 1, 0),
List(0, 0, 1)
)
val empty = List()
Ejemplo de códigos
● Array
val fiveInts = new Array[Int] (5)
val fiveToOne = Array(5, 4, 3, 2, 1)
fiveInts(0) = fiveToOne( 4)
fiveInts
En la primera línea tenemos que crear el array de tipo entero con una longitud de 5, o sencillamente se lo carga con los valores vistos en la
segundalínea, los arrays son accesibles desde su índice, en la tercera línea se da el valor del fiveInts con la posición 0 el valor del array
fiveToOne con la posición 4, y luego se imprime el valor del array modificado.
Ejemplo de código
● List Buffer
import scala.collection.mutable.ListBuffer
val buf = new ListBuffer[Int]
buf += 1
buf += 2
buf
3 +: buf
buf.toList
Se importa la biblioteca mutable.ListBuffer y se instancia la estructura de datos, se agrega valores mediante buf += 1. buf +=2, como
mencionamos anteriormente, es factible ingresar valores al principio de la list buffer y se realiza en la penúltima línea anteponiendo el
valor al símbolo así 3 +: buf y se invoca la lista con el método toList
Ejemplo de código
● ArrayBuffer
import scala.collection.mutable.ArrayBuffer
val buf = new ArrayBuffer[Int] ()
buf += 12
buf += 15
buf
La primera línea importa la biblioteca mutable ArrayBuffer, luego se instancia sin declarar su longitud, se agregan valores al ListBuffer y al
final con el nombre de ésta se instancia la lista con todos sus valores.
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.
Secuenciales - Stacks
De igual manera que en las Colas, en las pilas existen versiones mutables e
inmutables, posee los métodos principales push y pop.
import scala.collection.mutable.Stack
val stack = new Stack[Int]
stack.push( 1)
stack.push( 2)
stack.top
stack.pop
stack
El comando push permite ingresar valores a la cola, top devuelve el valor tope de la cola y pop eliminar ese valor.
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, si se desea
que sea inmutable se tiene que hacer una importación explícita.
Scala proporciona el acceso mediante el objeto Predef.
object Predef {
type Set[T] = scala.collection.immutable.Set[T]
type Map[K, V] = scala.collection.immutable.Map[K, V]
val Set = scala.collection.immutable.Set
val Map = scala.collection.immutable.Map
// ...
}
En el código anterior se explica el cómo instanciar un Set o un Map mutable o inmutable con las respectivas bibliotecas.
Operaciones - Set
La característica clave de los conjuntos es que se garantiza como máximo un valor por cada objeto
Operaciones - Map
Tenga en cuenta que parra poder crear un map, 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.
Bibliografía
● http://www.artima.com/pins1ed/collections.html
Programming in Scala, First Edition - by Martin Odersky, Lex Spoon, and Bill
Venners

Más contenido relacionado

La actualidad más candente

Java(Polymorphism)
Java(Polymorphism)Java(Polymorphism)
Java(Polymorphism)
harsh kothari
 
Switch statement
Switch statementSwitch statement
Switch statement
Patrick John McGee
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)
leidy2220
 
MySQL Basics
MySQL BasicsMySQL Basics
MySQL Basics
mysql content
 
Ensemble learning Techniques
Ensemble learning TechniquesEnsemble learning Techniques
Ensemble learning Techniques
Babu Priyavrat
 
Database Design Slide 1
Database Design Slide 1Database Design Slide 1
Database Design Slide 1ahfiki
 
Python functions
Python functionsPython functions
Python functions
Prof. Dr. K. Adisesha
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++
Obmaro García
 
Array within a class
Array within a classArray within a class
Array within a class
AAKASH KUMAR
 
Workshop presentation hands on r programming
Workshop presentation hands on r programmingWorkshop presentation hands on r programming
Workshop presentation hands on r programming
Nimrita Koul
 
Sql subquery
Sql  subquerySql  subquery
Sql subquery
Raveena Thakur
 
Grafos 0
Grafos 0Grafos 0
Grafos 0
brisarosales
 
Quicksort
QuicksortQuicksort
Quicksort
José Pino
 
Recursividad
RecursividadRecursividad
Recursividad
Lester Sanchez
 
MySql:Basics
MySql:BasicsMySql:Basics
MySql:Basics
DataminingTools Inc
 
Introduction to Clustering algorithm
Introduction to Clustering algorithmIntroduction to Clustering algorithm
Introduction to Clustering algorithm
hadifar
 
Dbms 2: Data Model
Dbms 2: Data ModelDbms 2: Data Model
Dbms 2: Data Model
Amiya9439793168
 

La actualidad más candente (20)

Java(Polymorphism)
Java(Polymorphism)Java(Polymorphism)
Java(Polymorphism)
 
Switch statement
Switch statementSwitch statement
Switch statement
 
Sets in python
Sets in pythonSets in python
Sets in python
 
Heap sort (Monticulos)
Heap sort (Monticulos)Heap sort (Monticulos)
Heap sort (Monticulos)
 
MySQL Basics
MySQL BasicsMySQL Basics
MySQL Basics
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Ensemble learning Techniques
Ensemble learning TechniquesEnsemble learning Techniques
Ensemble learning Techniques
 
Database Design Slide 1
Database Design Slide 1Database Design Slide 1
Database Design Slide 1
 
Python functions
Python functionsPython functions
Python functions
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Array within a class
Array within a classArray within a class
Array within a class
 
Workshop presentation hands on r programming
Workshop presentation hands on r programmingWorkshop presentation hands on r programming
Workshop presentation hands on r programming
 
Sql subquery
Sql  subquerySql  subquery
Sql subquery
 
Grafos 0
Grafos 0Grafos 0
Grafos 0
 
Quicksort
QuicksortQuicksort
Quicksort
 
Recursividad
RecursividadRecursividad
Recursividad
 
MySql:Basics
MySql:BasicsMySql:Basics
MySql:Basics
 
Introduction to Clustering algorithm
Introduction to Clustering algorithmIntroduction to Clustering algorithm
Introduction to Clustering algorithm
 
Dbms 2: Data Model
Dbms 2: Data ModelDbms 2: Data Model
Dbms 2: Data Model
 

Similar a Colecciones en Scala

Scala collections
Scala collectionsScala collections
Scala collections
crissbal94
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colaslabarra90
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colaslabarra90
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdf
michaelsilva2k20
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
Jyoc X
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
jorgeluis0317
 
Listas c#
Listas c#Listas c#
Listas c#rezzaca
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasElias Peña
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
MaxDLeon
 
Algoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).pptAlgoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).ppt
DaveRodriguez22
 
Unidad de listas
Unidad de listasUnidad de listas
Unidad de listas
yasmin lopez
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodosOrlando Verdugo
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y ColasAlex Pin
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
Marrodriguez007
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
maria alejandra
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras Lineales
José Antonio Sandoval Acosta
 

Similar a Colecciones en Scala (20)

Scala collections
Scala collectionsScala collections
Scala collections
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colas
 
Tad lista, pilas y colas
Tad lista, pilas y colasTad lista, pilas y colas
Tad lista, pilas y colas
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdf
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Listas c#
Listas c#Listas c#
Listas c#
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Estructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colasEstructura de datos listas, pilas y colas
Estructura de datos listas, pilas y colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Algoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).pptAlgoritmos y Estructura de datos_Semana5 (3).ppt
Algoritmos y Estructura de datos_Semana5 (3).ppt
 
Unidad de listas
Unidad de listasUnidad de listas
Unidad de listas
 
Vectores, array y sus métodos
Vectores, array y sus métodosVectores, array y sus métodos
Vectores, array y sus métodos
 
Pilas y Colas
Pilas y ColasPilas y Colas
Pilas y Colas
 
Colecciones
ColeccionesColecciones
Colecciones
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras Lineales
 

Último

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
oscartorres960914
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
cuentauniversidad34
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
Federico Toledo
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
RobertSotilLujn
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
lasocharfuelan123
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 

Último (10)

CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
infografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de softwareinfografia del sena para analisis y desarrollo de software
infografia del sena para analisis y desarrollo de software
 
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...experiencia de aprendizaje sobre lectura y escritura como  herramientas de ap...
experiencia de aprendizaje sobre lectura y escritura como herramientas de ap...
 
Los desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMsLos desafíos de calidad de software que nos trae la IA y los LLMs
Los desafíos de calidad de software que nos trae la IA y los LLMs
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA  DE TRABAJO DE CREACION DE TABLAS EN WORDFICHA  DE TRABAJO DE CREACION DE TABLAS EN WORD
FICHA DE TRABAJO DE CREACION DE TABLAS EN WORD
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 
trabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docxtrabajo integrador final sofi y vane.docx
trabajo integrador final sofi y vane.docx
 
Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 

Colecciones en Scala

  • 1. Colecciones en Scala Nombre: André Jaramillo Placencia Docente: Ing. Magali Mejía
  • 2. Índice ● Introducción ● Jerarquía de colecciones. ● Iterable - Iterator ● Colecciones ● Tipo de colecciones ● Secuencias ○ Listas ○ Arrays ○ List Buffeer ○ Ejemplos de código ○ Queue ○ Stacks
  • 3. Índice ● Set & Maps ○ Operaciones Set ○ Operaciones Map ● Bibliografía
  • 4. Introducción Tendremos una visión general sobre de cómo las estructuras de datos se relacionan entre sí la jerarquía de colecciones (herencia). El uso de las colecciones o estructuras se basa en la forma en que deseemos almacenar los datos para su posterior uso, conocer sus ventajas, desventajas, aplicación y requisitos de entrada.
  • 5. 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.
  • 6. 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.
  • 7. 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
  • 8. 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.
  • 9. Secuencias - Listas Listas: Es el tipo más importante a saber dentro de las colecciones, es una estructura de datos inmutable, Como ventaja podemos indica 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ásica: ● 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
  • 10. 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 devuelvan un array, ésto quiere decir que posee los mismo métodos.
  • 11. 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
  • 12. 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.
  • 13. Ejemplos de Código ● Listas literales val fruit = List("apples", "oranges", "pears") val nums = List(1, 2, 3, 4) val diag3 = List( List(1, 0, 0), List(0, 1, 0), List(0, 0, 1) ) val empty = List()
  • 14. Ejemplo de códigos ● Array val fiveInts = new Array[Int] (5) val fiveToOne = Array(5, 4, 3, 2, 1) fiveInts(0) = fiveToOne( 4) fiveInts En la primera línea tenemos que crear el array de tipo entero con una longitud de 5, o sencillamente se lo carga con los valores vistos en la segundalínea, los arrays son accesibles desde su índice, en la tercera línea se da el valor del fiveInts con la posición 0 el valor del array fiveToOne con la posición 4, y luego se imprime el valor del array modificado.
  • 15. Ejemplo de código ● List Buffer import scala.collection.mutable.ListBuffer val buf = new ListBuffer[Int] buf += 1 buf += 2 buf 3 +: buf buf.toList Se importa la biblioteca mutable.ListBuffer y se instancia la estructura de datos, se agrega valores mediante buf += 1. buf +=2, como mencionamos anteriormente, es factible ingresar valores al principio de la list buffer y se realiza en la penúltima línea anteponiendo el valor al símbolo así 3 +: buf y se invoca la lista con el método toList
  • 16. Ejemplo de código ● ArrayBuffer import scala.collection.mutable.ArrayBuffer val buf = new ArrayBuffer[Int] () buf += 12 buf += 15 buf La primera línea importa la biblioteca mutable ArrayBuffer, luego se instancia sin declarar su longitud, se agregan valores al ListBuffer y al final con el nombre de ésta se instancia la lista con todos sus valores.
  • 17. 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.
  • 18. Secuenciales - Stacks De igual manera que en las Colas, en las pilas existen versiones mutables e inmutables, posee los métodos principales push y pop. import scala.collection.mutable.Stack val stack = new Stack[Int] stack.push( 1) stack.push( 2) stack.top stack.pop stack El comando push permite ingresar valores a la cola, top devuelve el valor tope de la cola y pop eliminar ese valor.
  • 19. Set & Maps Scala proporciona tanto mutables como inmutables versiones de Set y Maps y su jerarquía es la siguiente:
  • 20. Set & Maps Por defecto se escribe “Set” o “Map” y se obtiene un objeto inmutable, si se desea que sea inmutable se tiene que hacer una importación explícita. Scala proporciona el acceso mediante el objeto Predef. object Predef { type Set[T] = scala.collection.immutable.Set[T] type Map[K, V] = scala.collection.immutable.Map[K, V] val Set = scala.collection.immutable.Set val Map = scala.collection.immutable.Map // ... } En el código anterior se explica el cómo instanciar un Set o un Map mutable o inmutable con las respectivas bibliotecas.
  • 21. Operaciones - Set La característica clave de los conjuntos es que se garantiza como máximo un valor por cada objeto
  • 22. Operaciones - Map Tenga en cuenta que parra poder crear un map, 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.
  • 23. Bibliografía ● http://www.artima.com/pins1ed/collections.html Programming in Scala, First Edition - by Martin Odersky, Lex Spoon, and Bill Venners