SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
SCALA
COLLECTIONS
Nombres:
Cristina Balcazar
Domenica Lasso
Introducción
Las colecciones o contenedores de objetos están en el lenguaje
de programación Scala. La mayoría de las colecciones que
ofrece son inmutables, estas tienen muchas facilidades para las
operaciones de iteración.
Las colecciones de Scala se puede distinguir en dos tipos las mutables, en
estas se puede agregar, cambiar o remover elementos de una colección. Y
las inmutables, al contrario de las mutables nunca cambian, puede existir
operaciones que simulen la modificación, agregación o eliminación, pero
estas operaciones en cada caso retornan una nueva colección y dejan sin
cambiar la antigua.
Importar una colección
● Import scala.collection
● Import scala.collection.immutable
● Import scala.collection.mutable
Si se llama a una colección sin un prefijo por ejemplo Import
scala.collection.Set este se refiere a una colección immutable. Para llamar a
una colección mutable se debe llamar de la siguiente forma Import
scala.collection.mutable.Set
Algunos tipos tienen alias que se pueden usar como simples nombres, sin la
necesidad de importar.
Jerarquía
Traversable
● Todas las operaciones están garantizados para llevar a cabo de una manera un
único subproceso.
● Su única operación es el foreach, que permite aplicar una operación para cada
elemento de una colección.
def foreach[U](f: Elem => U): Unit
● Este método es esencial para la operaciones con Traversable.
● Esta operación se aplica a todas las clases que heredan de Traversable.
Iterable
● Un Iterable puede crear un iterador, que está basado en la implementación del
foreach. este define un orden de los elementos.
● Sirve para recorrer los elementos uno por uno.
Seq
● Son casos especiales de la clase Iterable. A diferencia de Iterable, siempre
tienen un orden y longitud definida de elementos.
● Seq tiene dos subtrait principales:
○ IndexedSeq
○ LinearSeq
IndexedSeq
Se define en términos de dos métodos abstractos:
● apply: Encuentra elemento por su índice
● length: La longitud de la secuencia
Soportan tiempo constante 0 tiempo casi constante en el acceso de un elemento.
LinearSeq
Se define en términos de tres métodos abstractos
● isEmpty: indica si la lista está vacía
● head: primer elemento de la secuencia
● tail: todos los elementos de la secuencia excepto el primero
Set
Un rasgo base para todos los conjuntos mutables, como inmutables.
Set es una colección que no tiene elementos duplicados.
Set tiene dos subclases que la implementan:
● SortedSet: no elementos duplicados y se encuentran ordenados.
● BitSet: son conjuntos de números enteros no negativos que se representan
como matrices de tamaño variable de bits empaquetados en palabras de 64 bits
SortedSet
Se define con los siguientes métodos:
● myOrdering: especifica el orden en el que se debe ordenar el SortedSet
● range: devuelve los elementos de un SortedSet sin incluir el último elemento
● from: devuelve los elementos desde el elemento llamado hasta el final del
sortedset, da como resultado otro sortedset
BitSet
Bitsets son conjuntos de elementos enteros no negativos que se implementan en
una o más palabras de bits empaquetados. Este usa arrays de largo de 64 bits que va
almacenando los información.
Map
Maps son iterables que contienen pares de claves y valor.
SortedMap: Un Map cuyas claves se encuentran ordenadas.
SortedMap
Se define con los siguientes métodos:
● apply: Encuentra elemento por su clave
● get: Busca un valor asociado con una clave
● getOrElse: realiza un trabajo igual al de get
● contains: busca si una clave se encuentra en el sortedset
● idDefiniedAt: método igual al de contains
List
Las listas de Scala son bastante similares a los array lo que significa que todos los
elementos de una lista tienen el mismo tipo pero hay dos diferencias importantes:
1. Las listas son inmutables, lo que significa que los elementos de una lista no se
pueden cambiar por asignación.
2. Las listas representan una lista enlazada mientras que los arrays son planas.
// inicialización
var numeros: List[ Int ] = List()
var numeros1: List[ Int ] = List( 1 , 2 , 3 , 4 )
var listas: List[ List[Int] ] = List(List(1,0,0), List(0,1,0), List(0,0,1));
println(List.range(1,5)) //Rango de elementos En este caso List(1,2,3,4)
//Inserción
numeros=numeros:+5 //añadir elementos al final list(1,2,3,4,5)
numeros=numeros.::(5) //añadir elementos al inicio List(5,1,2,3,4,5)
//concatenar listas
numeros= numeros.:::(List(7,8))
var numeros3 :List[Int]=List(1,2,3,4)
//tamano de una lista
println(numeros3.length)
println(numeros.isEmpty)
// recuperar un elemento
println(numeros3.last) //ultimo elemento de la lista
println(numeros3(2))
//modificar
numeros3.updated(2,6) // genera una copia de la lista con el elemento reemplazado, en la posición indicada println(numeros3)
//busqueda
println(numeros3.indexOf(2)) //Retorna el índice del elemento a buscar en la lista, en caso de no encontrar retorna -1
println(numeros3.contains(2)) //Retorna True si encuentra el elemento, caso contrario retorna False.
println(numeros3.find((i: Int) => i % 2 == 0)) //Retorna el primer elemento que cumpla con la condición.
//Sublista
println(numeros3.slice(1,3)) //Retorna una lista que inicia en el elemento de índice del primer parámetro hasta el segundo parámetro
menos 1.
println(numeros3.drop(2)) //Retorna una sublista sin los n primeros elementos
//Generar String
println(numeros3.mkString(",")) // retorna un string con todos los elementos de la lista espaciados por un separador
Stream
Posee el mismo comportamiento y rendimiento que una lista. Excepto que posee
lazy evaluation (evaluación perezosa), es decir que sólo se operará con los
elementos cuando sea solicitada la información. Esto también permite que el tamaño
de un Stream pueda ser infinito.
Inicialización
//Utilizamos #:: como operador para agregar un elemento al Stream
var numeros = 1 #:: 2#:: 3 #:: 4#:: Stream.empty
//Si imprimimos la lista obtenemos Stream(1,?). El signo de interrogación demuestra que todavía no se analizan los elementos
que han sido ingresados.
//Sin embargo cuando inicie el análisis del stream solo se podrá recorrer hasta el último elemento
//El último elemento de la lista debe ser un Stream. Se puede colocar un Stream nulo como último elemento mediante el
Stream.empty
Los valores sólo se inicializan cuando se realiza una operación Ej:
numeros(1) //Retorna El elemento en posición 1 en este caso 2
//El resto de operaciones se puede realizar de manera similar a List.
Vector
Es una colección de datos inmutable. Facilita el acceso aleatorio e inserción de los
elementos utilizando una complejidad algorítmica constante. Trabajo que lo realiza
de manera más efectiva que una lista.
//inicialización
var numeros:Vector[Int]=Vector()
var numeros1:Vector[Int]=Vector(1,2,3,4)
//inserción
numeros1=numeros1:+5 // anadir al final
numeros1 = 100 +: numeros1 //anadir al inicio del vector
println(numeros1)
Stack
El stack o pila, es una estructura de datos que proporcionan una secuencia de
elementos del tipo LIFO(Last-in-first-out), es decir los elementos se colocan al final
de la pila y son retirados desde la parte final de la pila. Tienen una versión mutable y
otra inmutable.
var numeros: Stack[ Int ] = Stack()
var numeros1: Stack[ Int ] = Stack( 1 , 2 , 3 , 4 )
// Inserción
numeros.push(1) //Añadir un elemento al final de la pila. List(1,2,3,4,5)
numeros.push(1,2,3) //Añadir varios elementos al final de la pila. List(1,2,3,4,1,2,3)
// Recuperar elemento
println(numeros1.top) //Ultimo elemento de la pila
println(numeros1.last) //Ultimo elemento de la pila
println(numeros1(2)) //Elemento en el índice pos
// Eliminar
numeros1.pop //Elimina el último elemento de la pila
println(numeros1)
// Sublista
println(numeros1.slice(1,3)) //Retorna un array que inicia en el elemento de índice del primer
parámetro
Queue
Queue o Fila, es una estructura de datos que proporcionan una secuencia de
elementos del tipo FIFO(Last-in-first-out), es decir el primer elemento que ingresa
es el primero que sale. Tienen una versión mutable y otra inmutable.
Inicialización
import scala.collection.mutable.Queue o
import scala.collection.immutable.Queue
var numeros1: Queue[ Int ] = Queue()
var numeros: Queue[ Int ] = Queue( 1 , 2 , 3 , 4 )
// Inserción
/ En filas inmutables
numeros.enqueue(1) //Añadir un elemento al final de la fila. List(1,2,3,4,1)
numeros.enqueue(1,2,3) //Añadir varios elementos al final de la pila. List(1,2,3,4,1,2,3)
//En filas mutables
numeros += 1 //Añadir un elemento al final de la fila.
numeros ++= List(5,6) //Añadir varios elementos al final de la pila
val valor= numeros.dequeue //Retorna el primer valor de la fila, este es retirado de
la pila original numeros = Queue(2,3,4)
Range
Secuencia ordenada de números enteros, separadas entre sí por un valor entero.
//Inicialización
//Retorna una secuencia de números enteros de uno en uno desde el primer parámetro inclusivo
//hasta el segundo parámetro exclusivo.
var range1: Range = Range(-1,5) //Range(-1,0,1,2,3,4)
var range: Range = 1 to 3
//El tercer parámetro (Debe ser entero) indica la diferencia que existe entre cada elemento de Range.
var range2: Range = Range(-1,5,2) //Range(-1,1,3)
var range4: Range = Range(5,-1,-1) //Range(5,4,3,2,1,0)
//Si deseamos crear un Range que genere una secuencia con segundo parámetro inclusivo
var range5: Range = 1 until 3 //No soporta operaciones de modificación o inserción
Array
Scala ofrece una estructura de datos, la matriz , que almacena
una colección de tamaño fijo secuencial de elementos del
mismo tipo.
Bibliografía Principal:
Odersky Martin, The Scala Language Specification, 2014
Bibliografía de Apoyo:
Página Web:
http://mundogeek.net/archivos/2008/01/21/python-tipos-basicos-ii-colecciones/
http://aperiodic.net/phil/scala/s-99/
http://www.artima.com/pins1ed/working-with-lists.html
https://sites.google.com/site/sugaractivities/home/curso-pygame/tipos-de-datosco
mplejos-de-python-colecciones---1a-parte-listas Último Acceso: 2014/12/12

Más contenido relacionado

La actualidad más candente (20)

conceptos de Punteros y Nodos
conceptos de Punteros y Nodosconceptos de Punteros y Nodos
conceptos de Punteros y Nodos
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Listas
ListasListas
Listas
 
Estructuras dinámicas
Estructuras dinámicasEstructuras dinámicas
Estructuras dinámicas
 
Listas
ListasListas
Listas
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Listas Pilas Colas
Listas Pilas ColasListas Pilas Colas
Listas Pilas Colas
 
Listas y Pilas
Listas y PilasListas y Pilas
Listas y Pilas
 
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
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Tda y heaps
Tda y heapsTda y heaps
Tda y heaps
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
Teoria de listas
Teoria de listasTeoria de listas
Teoria de listas
 
Estructura de Datos (LISTAS, COLAS y PILAS)
Estructura de Datos (LISTAS, COLAS y PILAS) Estructura de Datos (LISTAS, COLAS y PILAS)
Estructura de Datos (LISTAS, COLAS y PILAS)
 
Listas c#
Listas c#Listas c#
Listas c#
 

Similar a Scala collections

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_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasHuascar Génere
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datoscharlezgt
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylistRobert Wolf
 
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
 
Clase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfClase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfArielManzano3
 
Colecciones en java
Colecciones en javaColecciones en java
Colecciones en javaMaîck Ddz
 
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
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Iteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaIteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaGaby Delgado
 
Lissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette I. Pimentel S
 
Pilas Dylan Medina.pdf
Pilas Dylan Medina.pdfPilas Dylan Medina.pdf
Pilas Dylan Medina.pdfDylanMedina4
 

Similar a Scala collections (20)

Colecciones en Scala
Colecciones en ScalaColecciones en Scala
Colecciones en Scala
 
DECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdfDECLARACION DE LISTAS 1.pdf
DECLARACION DE LISTAS 1.pdf
 
Colecciones en Scala
Colecciones en ScalaColecciones en Scala
Colecciones en Scala
 
Jyoc java-cap11 colecciones
Jyoc java-cap11 coleccionesJyoc java-cap11 colecciones
Jyoc java-cap11 colecciones
 
Darwin rodriguez 12-0861_pilasy_colas
Darwin rodriguez 12-0861_pilasy_colasDarwin rodriguez 12-0861_pilasy_colas
Darwin rodriguez 12-0861_pilasy_colas
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Declaración y creación de un arraylist
Declaración y creación de un arraylistDeclaración y creación de un arraylist
Declaración y creación de un arraylist
 
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
 
Presentacion pilas lista y colas
Presentacion pilas lista y colas  Presentacion pilas lista y colas
Presentacion pilas lista y colas
 
Clase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdfClase 03 Listas en Python.pdf
Clase 03 Listas en Python.pdf
 
Colecciones en java
Colecciones en javaColecciones en java
Colecciones en java
 
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
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Iteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en JavaIteradores, Listas y Conjuntos en Java
Iteradores, Listas y Conjuntos en Java
 
Lissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colasLissette pimentel 11 1149 --- listas, pilas y colas
Lissette pimentel 11 1149 --- listas, pilas y colas
 
Pilas Dylan Medina.pdf
Pilas Dylan Medina.pdfPilas Dylan Medina.pdf
Pilas Dylan Medina.pdf
 

Último

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (19)

Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Scala collections

  • 2. Introducción Las colecciones o contenedores de objetos están en el lenguaje de programación Scala. La mayoría de las colecciones que ofrece son inmutables, estas tienen muchas facilidades para las operaciones de iteración.
  • 3. Las colecciones de Scala se puede distinguir en dos tipos las mutables, en estas se puede agregar, cambiar o remover elementos de una colección. Y las inmutables, al contrario de las mutables nunca cambian, puede existir operaciones que simulen la modificación, agregación o eliminación, pero estas operaciones en cada caso retornan una nueva colección y dejan sin cambiar la antigua.
  • 4. Importar una colección ● Import scala.collection ● Import scala.collection.immutable ● Import scala.collection.mutable
  • 5. Si se llama a una colección sin un prefijo por ejemplo Import scala.collection.Set este se refiere a una colección immutable. Para llamar a una colección mutable se debe llamar de la siguiente forma Import scala.collection.mutable.Set Algunos tipos tienen alias que se pueden usar como simples nombres, sin la necesidad de importar.
  • 7. Traversable ● Todas las operaciones están garantizados para llevar a cabo de una manera un único subproceso. ● Su única operación es el foreach, que permite aplicar una operación para cada elemento de una colección. def foreach[U](f: Elem => U): Unit ● Este método es esencial para la operaciones con Traversable. ● Esta operación se aplica a todas las clases que heredan de Traversable.
  • 8. Iterable ● Un Iterable puede crear un iterador, que está basado en la implementación del foreach. este define un orden de los elementos. ● Sirve para recorrer los elementos uno por uno.
  • 9. Seq ● Son casos especiales de la clase Iterable. A diferencia de Iterable, siempre tienen un orden y longitud definida de elementos. ● Seq tiene dos subtrait principales: ○ IndexedSeq ○ LinearSeq
  • 10. IndexedSeq Se define en términos de dos métodos abstractos: ● apply: Encuentra elemento por su índice ● length: La longitud de la secuencia Soportan tiempo constante 0 tiempo casi constante en el acceso de un elemento.
  • 11. LinearSeq Se define en términos de tres métodos abstractos ● isEmpty: indica si la lista está vacía ● head: primer elemento de la secuencia ● tail: todos los elementos de la secuencia excepto el primero
  • 12. Set Un rasgo base para todos los conjuntos mutables, como inmutables. Set es una colección que no tiene elementos duplicados. Set tiene dos subclases que la implementan: ● SortedSet: no elementos duplicados y se encuentran ordenados. ● BitSet: son conjuntos de números enteros no negativos que se representan como matrices de tamaño variable de bits empaquetados en palabras de 64 bits
  • 13. SortedSet Se define con los siguientes métodos: ● myOrdering: especifica el orden en el que se debe ordenar el SortedSet ● range: devuelve los elementos de un SortedSet sin incluir el último elemento ● from: devuelve los elementos desde el elemento llamado hasta el final del sortedset, da como resultado otro sortedset
  • 14. BitSet Bitsets son conjuntos de elementos enteros no negativos que se implementan en una o más palabras de bits empaquetados. Este usa arrays de largo de 64 bits que va almacenando los información.
  • 15. Map Maps son iterables que contienen pares de claves y valor. SortedMap: Un Map cuyas claves se encuentran ordenadas.
  • 16. SortedMap Se define con los siguientes métodos: ● apply: Encuentra elemento por su clave ● get: Busca un valor asociado con una clave ● getOrElse: realiza un trabajo igual al de get ● contains: busca si una clave se encuentra en el sortedset ● idDefiniedAt: método igual al de contains
  • 17. List Las listas de Scala son bastante similares a los array lo que significa que todos los elementos de una lista tienen el mismo tipo pero hay dos diferencias importantes: 1. Las listas son inmutables, lo que significa que los elementos de una lista no se pueden cambiar por asignación. 2. Las listas representan una lista enlazada mientras que los arrays son planas.
  • 18. // inicialización var numeros: List[ Int ] = List() var numeros1: List[ Int ] = List( 1 , 2 , 3 , 4 ) var listas: List[ List[Int] ] = List(List(1,0,0), List(0,1,0), List(0,0,1)); println(List.range(1,5)) //Rango de elementos En este caso List(1,2,3,4) //Inserción numeros=numeros:+5 //añadir elementos al final list(1,2,3,4,5) numeros=numeros.::(5) //añadir elementos al inicio List(5,1,2,3,4,5)
  • 19. //concatenar listas numeros= numeros.:::(List(7,8)) var numeros3 :List[Int]=List(1,2,3,4) //tamano de una lista println(numeros3.length) println(numeros.isEmpty) // recuperar un elemento println(numeros3.last) //ultimo elemento de la lista println(numeros3(2))
  • 20. //modificar numeros3.updated(2,6) // genera una copia de la lista con el elemento reemplazado, en la posición indicada println(numeros3) //busqueda println(numeros3.indexOf(2)) //Retorna el índice del elemento a buscar en la lista, en caso de no encontrar retorna -1 println(numeros3.contains(2)) //Retorna True si encuentra el elemento, caso contrario retorna False. println(numeros3.find((i: Int) => i % 2 == 0)) //Retorna el primer elemento que cumpla con la condición. //Sublista println(numeros3.slice(1,3)) //Retorna una lista que inicia en el elemento de índice del primer parámetro hasta el segundo parámetro menos 1. println(numeros3.drop(2)) //Retorna una sublista sin los n primeros elementos //Generar String println(numeros3.mkString(",")) // retorna un string con todos los elementos de la lista espaciados por un separador
  • 21. Stream Posee el mismo comportamiento y rendimiento que una lista. Excepto que posee lazy evaluation (evaluación perezosa), es decir que sólo se operará con los elementos cuando sea solicitada la información. Esto también permite que el tamaño de un Stream pueda ser infinito.
  • 22. Inicialización //Utilizamos #:: como operador para agregar un elemento al Stream var numeros = 1 #:: 2#:: 3 #:: 4#:: Stream.empty //Si imprimimos la lista obtenemos Stream(1,?). El signo de interrogación demuestra que todavía no se analizan los elementos que han sido ingresados. //Sin embargo cuando inicie el análisis del stream solo se podrá recorrer hasta el último elemento //El último elemento de la lista debe ser un Stream. Se puede colocar un Stream nulo como último elemento mediante el Stream.empty Los valores sólo se inicializan cuando se realiza una operación Ej: numeros(1) //Retorna El elemento en posición 1 en este caso 2 //El resto de operaciones se puede realizar de manera similar a List.
  • 23. Vector Es una colección de datos inmutable. Facilita el acceso aleatorio e inserción de los elementos utilizando una complejidad algorítmica constante. Trabajo que lo realiza de manera más efectiva que una lista.
  • 24. //inicialización var numeros:Vector[Int]=Vector() var numeros1:Vector[Int]=Vector(1,2,3,4) //inserción numeros1=numeros1:+5 // anadir al final numeros1 = 100 +: numeros1 //anadir al inicio del vector println(numeros1)
  • 25. Stack El stack o pila, es una estructura de datos que proporcionan una secuencia de elementos del tipo LIFO(Last-in-first-out), es decir los elementos se colocan al final de la pila y son retirados desde la parte final de la pila. Tienen una versión mutable y otra inmutable.
  • 26. var numeros: Stack[ Int ] = Stack() var numeros1: Stack[ Int ] = Stack( 1 , 2 , 3 , 4 ) // Inserción numeros.push(1) //Añadir un elemento al final de la pila. List(1,2,3,4,5) numeros.push(1,2,3) //Añadir varios elementos al final de la pila. List(1,2,3,4,1,2,3)
  • 27. // Recuperar elemento println(numeros1.top) //Ultimo elemento de la pila println(numeros1.last) //Ultimo elemento de la pila println(numeros1(2)) //Elemento en el índice pos // Eliminar numeros1.pop //Elimina el último elemento de la pila println(numeros1) // Sublista println(numeros1.slice(1,3)) //Retorna un array que inicia en el elemento de índice del primer parámetro
  • 28. Queue Queue o Fila, es una estructura de datos que proporcionan una secuencia de elementos del tipo FIFO(Last-in-first-out), es decir el primer elemento que ingresa es el primero que sale. Tienen una versión mutable y otra inmutable.
  • 29. Inicialización import scala.collection.mutable.Queue o import scala.collection.immutable.Queue var numeros1: Queue[ Int ] = Queue() var numeros: Queue[ Int ] = Queue( 1 , 2 , 3 , 4 ) // Inserción / En filas inmutables numeros.enqueue(1) //Añadir un elemento al final de la fila. List(1,2,3,4,1) numeros.enqueue(1,2,3) //Añadir varios elementos al final de la pila. List(1,2,3,4,1,2,3) //En filas mutables numeros += 1 //Añadir un elemento al final de la fila. numeros ++= List(5,6) //Añadir varios elementos al final de la pila
  • 30. val valor= numeros.dequeue //Retorna el primer valor de la fila, este es retirado de la pila original numeros = Queue(2,3,4)
  • 31. Range Secuencia ordenada de números enteros, separadas entre sí por un valor entero.
  • 32. //Inicialización //Retorna una secuencia de números enteros de uno en uno desde el primer parámetro inclusivo //hasta el segundo parámetro exclusivo. var range1: Range = Range(-1,5) //Range(-1,0,1,2,3,4) var range: Range = 1 to 3 //El tercer parámetro (Debe ser entero) indica la diferencia que existe entre cada elemento de Range. var range2: Range = Range(-1,5,2) //Range(-1,1,3) var range4: Range = Range(5,-1,-1) //Range(5,4,3,2,1,0) //Si deseamos crear un Range que genere una secuencia con segundo parámetro inclusivo var range5: Range = 1 until 3 //No soporta operaciones de modificación o inserción
  • 33. Array Scala ofrece una estructura de datos, la matriz , que almacena una colección de tamaño fijo secuencial de elementos del mismo tipo.
  • 34. Bibliografía Principal: Odersky Martin, The Scala Language Specification, 2014
  • 35. Bibliografía de Apoyo: Página Web: http://mundogeek.net/archivos/2008/01/21/python-tipos-basicos-ii-colecciones/ http://aperiodic.net/phil/scala/s-99/ http://www.artima.com/pins1ed/working-with-lists.html https://sites.google.com/site/sugaractivities/home/curso-pygame/tipos-de-datosco mplejos-de-python-colecciones---1a-parte-listas Último Acceso: 2014/12/12