arraydeque arraydeque
play

[ARRAYDEQUE] [ARRAYDEQUE] Scala 2.13 Collections * - PowerPoint PPT Presentation

[ARRAYDEQUE] [ARRAYDEQUE] Scala 2.13 Collections * https://english.stackexchange.com/questions/226954/how-is-deque-commonly-pronounced ABOUT ME ABOUT ME Pathikrit Bhowmick github.com/pathikrit Coatue Management Scala for 5 years Data


  1. [ARRAYDEQUE] [ARRAYDEQUE] Scala 2.13 Collections * https://english.stackexchange.com/questions/226954/how-is-deque-commonly-pronounced

  2. ABOUT ME ABOUT ME Pathikrit Bhowmick github.com/pathikrit Coatue Management Scala for 5 years Data structures FP ❤

  3. SCALA 2.13 COLLECTIONS SCALA 2.13 COLLECTIONS https://www.scala-lang.org/blog/2018/06/13/scala-213-collections.html

  4. CANBUILDFROM CANBUILDFROM def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That https://www.scala-lang.org/blog/2017/05/30/tribulations-canbuildfrom.html

  5. CANBUILDFROM CANBUILDFROM def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That trait IterableOps[A, CC[_]] { def map[B](f: A => B): CC[B] } https://www.scala-lang.org/blog/2017/05/30/tribulations-canbuildfrom.html

  6. NEW APIS NEW APIS

  7. NEW APIS NEW APIS def namesByAge(users: Seq[User]): Map[Int, Seq[String]] = users.groupBy(_.age).mapValues(users => users.map(_.name))

  8. NEW APIS NEW APIS def namesByAge(users: Seq[User]): Map[Int, Seq[String]] = users.groupBy(_.age).mapValues(users => users.map(_.name)) def namesByAge(users: Seq[User]): Map[Int, Seq[String]] = users.groupMap(_.age)(_.name)

  9. IN PLACE MUTABLE API IN PLACE MUTABLE API

  10. IN PLACE MUTABLE API IN PLACE MUTABLE API val users: mutable.ArrayBuffer[User] = ??? users .filterInPlace(user => !user.name.startsWith("J")) .mapInPlace(user => user.copy(age = user.age + 1))

  11. MORE MORE Stream vs LazyList Better Views Iterable vs. Traversable/Iterator New collections

  12. ARRAYDEQUE ARRAYDEQUE

  13. ARRAYDEQUE ARRAYDEQUE New collection in Scala 2.13 Also known as CircularBuffer

  14. ARRAYDEQUE ARRAYDEQUE New collection in Scala 2.13 Also known as CircularBuffer Replacement for most mutable collections Faster than ArrayBuffer when used as an array Faster than LinkedList when used as a linked list

  15. ARRAYDEQUE ARRAYDEQUE New collection in Scala 2.13 Also known as CircularBuffer Replacement for most mutable collections Faster than ArrayBuffer when used as an array Faster than LinkedList when used as a linked list My first contribution to Scala!

  16. DATA STRUCTURES 101 DATA STRUCTURES 101 Data Structures get(idx) update(idx, e) append(e) prepend(e) deleteFirst() deleteLast() insertAt(idx, e) deleteAt(idx) mutable.ArrayDeque O(1) O(1) O(1) O(1) O(1) O(1) O(min(i, n-i)) O(min(i, n-i)) mutable.ArrayBuffer O(1) O(1) O(1) O(n) O(n) O(1) O(n) O(n) mutable.Stack O(n) O(n) O(1) (push) O(n) O(n) O(1) (pop) O(n) O(n) mutable.Queue O(n) O(n) O(1) (enque) O(n) O(1) (deque) O(n) O(n) O(n) mutable.LinkedList O(n) O(n) O(1) O(1) O(1) O(1) O(n) O(n) java.util.ArrayList O(1) O(1) O(1) O(n) O(n) O(1) O(n) O(n) java.util.ArrayDeque N/A O(1) O(1) O(1) O(1) O(1) O(n) O(n)

  17. ARRAY ARRAY DOUBLY OUBLY ENDED NDED QUE QUEUE UE

  18. class ArrayDeque[A] { val n = 64 val array = Array.ofDim[A](n) var start, end = 0 def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a def apply(i: Int): A = array((start + i)%n) } DOUBLY OUBLY ENDED NDED QUE QUEUE UE

  19. class ArrayDeque[A] { class ArrayDeque[A] { val n = 64 val n = 64 val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) var start, end = 0 var start, end = 0 def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a array((start + i)%n) = a def apply(i: Int): A = def apply(i: Int): A = array((start + i)%n) array((start + i)%n) } def append(a: A): Unit = { DOUBLY OUBLY array(end) = a end = (end + 1)%n } } ENDED NDED QUE QUEUE UE

  20. class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { val n = 64 val n = 64 val n = 64 val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) var start, end = 0 var start, end = 0 var start, end = 0 def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = array((start + i)%n) array((start + i)%n) array((start + i)%n) } def append(a: A): Unit = { def append(a: A): Unit = { DOUBLY OUBLY array(end) = a array(end) = a end = (end + 1)%n end = (end + 1)%n } } } def prepend(a: A): Unit = { start = (start - 1)%n ENDED NDED array(start) = a } } QUE QUEUE UE

  21. class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { val n = 64 val n = 64 val n = 64 val n = 64 val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) } def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { DOUBLY OUBLY array(end) = a array(end) = a array(end) = a end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n } } } } def prepend(a: A): Unit = { def prepend(a: A): Unit = { start = (start - 1)%n start = (start - 1)%n ENDED NDED array(start) = a array(start) = a } } } def deleteLast(): Unit = end = (end - 1)%n QUE QUEUE UE }

  22. class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { val n = 64 val n = 64 val n = 64 val n = 64 val n = 64 val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) } def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { DOUBLY OUBLY array(end) = a array(end) = a array(end) = a array(end) = a end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n } } } } } def prepend(a: A): Unit = { def prepend(a: A): Unit = { def prepend(a: A): Unit = { start = (start - 1)%n start = (start - 1)%n start = (start - 1)%n ENDED NDED array(start) = a array(start) = a array(start) = a } } } } def deleteLast(): Unit = def deleteLast(): Unit = end = (end - 1)%n end = (end - 1)%n QUEUE QUE UE } def deleteFirst(): Unit = start = (start + 1)%n }

  23. class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { class ArrayDeque[A] { val n = 64 val n = 64 val n = 64 val n = 64 val n = 64 val n = 64 val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) val array = Array.ofDim[A](n) var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 var start, end = 0 def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = def update(i: Int, a: A): Unit = ARRAY ARRAY array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a array((start + i)%n) = a def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = def apply(i: Int): A = array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) array((start + i)%n) } def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { def append(a: A): Unit = { DOUBLY OUBLY array(end) = a array(end) = a array(end) = a array(end) = a array(end) = a end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n end = (end + 1)%n } } } } } } def prepend(a: A): Unit = { def prepend(a: A): Unit = { def prepend(a: A): Unit = { def prepend(a: A): Unit = { start = (start - 1)%n start = (start - 1)%n start = (start - 1)%n start = (start - 1)%n ENDED NDED array(start) = a array(start) = a array(start) = a array(start) = a } } } } } def deleteLast(): Unit = def deleteLast(): Unit = def deleteLast(): Unit = end = (end - 1)%n end = (end - 1)%n end = (end - 1)%n QUEUE QUE UE } def deleteFirst(): Unit = def deleteFirst(): Unit = start = (start + 1)%n start = (start + 1)%n } def clear(): Unit = start = end }

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend