SlideShare a Scribd company logo
1 of 23
Download to read offline
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

More Related Content

What's hot (20)

Colecciones en Scala
Colecciones en ScalaColecciones en Scala
Colecciones en Scala
 
Function arguments In Python
Function arguments In PythonFunction arguments In Python
Function arguments In Python
 
Python set
Python setPython set
Python set
 
STL ALGORITHMS
STL ALGORITHMSSTL ALGORITHMS
STL ALGORITHMS
 
Interface in java
Interface in javaInterface in java
Interface in java
 
Selection sort
Selection sortSelection sort
Selection sort
 
Data Structures - Lecture 7 [Linked List]
Data Structures - Lecture 7 [Linked List]Data Structures - Lecture 7 [Linked List]
Data Structures - Lecture 7 [Linked List]
 
String, string builder, string buffer
String, string builder, string bufferString, string builder, string buffer
String, string builder, string buffer
 
Dsa circular queue
Dsa circular queueDsa circular queue
Dsa circular queue
 
Datatypes in c
Datatypes in cDatatypes in c
Datatypes in c
 
Collections In Java
Collections In JavaCollections In Java
Collections In Java
 
Tuple in python
Tuple in pythonTuple in python
Tuple in python
 
Stl Containers
Stl ContainersStl Containers
Stl Containers
 
Collections and generics
Collections and genericsCollections and generics
Collections and generics
 
Pointers and Dynamic Memory Allocation
Pointers and Dynamic Memory AllocationPointers and Dynamic Memory Allocation
Pointers and Dynamic Memory Allocation
 
Ordenación Distribución
Ordenación DistribuciónOrdenación Distribución
Ordenación Distribución
 
Data structure by Digvijay
Data structure by DigvijayData structure by Digvijay
Data structure by Digvijay
 
Data Structures & Algorithm design using C
Data Structures & Algorithm design using C Data Structures & Algorithm design using C
Data Structures & Algorithm design using C
 
Python-02| Input, Output & Import
Python-02| Input, Output & ImportPython-02| Input, Output & Import
Python-02| Input, Output & Import
 
Pointers in c++
Pointers in c++Pointers in c++
Pointers in c++
 

Similar to Colecciones en Scala

Scala collections
Scala collectionsScala collections
Scala collectionscrissbal94
 
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.pdfmichaelsilva2k20
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc X
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
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 colasMaxDLeon
 
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).pptDaveRodriguez22
 
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
 
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 LinealesJosé Antonio Sandoval Acosta
 

Similar to 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
 

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