karol_dziachan

simple ArrayList Scala

Jan 8th, 2021 (edited)
1,376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.56 KB | None | 0 0
  1. import scala.reflect.ClassTag
  2.  
  3. object ArrayList{
  4.   var counter = 0
  5.   var increaseFactor = 2
  6.   var size = 0;
  7. }
  8.  
  9. class ArrayList[T: ClassTag](private var initialSize: Int = 5) {
  10.   ArrayList.size = initialSize
  11.   var arr = new Array[T](5)
  12.  
  13.   def size:Int = ArrayList.counter
  14.  
  15.   def isEmpty:Boolean = ArrayList.counter == 0
  16.  
  17.   def amortizedArray:Unit = {
  18.     var newArr = new Array[T](ArrayList.size*ArrayList.increaseFactor)
  19.     var i = 0
  20.  
  21.     while (i < size)
  22.      {
  23.        newArr(i) = arr(i)
  24.         i = i+1
  25.      }
  26.  
  27.     arr = newArr
  28.     ArrayList.size = ArrayList.size*ArrayList.increaseFactor
  29.   }
  30.   def add(elem: T) =
  31.     {
  32.       if (ArrayList.counter == ArrayList.size)
  33.         amortizedArray
  34.  
  35.       arr(ArrayList.counter) = elem
  36.       ArrayList.counter+=1
  37.     }
  38.  
  39.   def add(index: Int, elem: T): Unit =
  40.   {
  41.     if(index < 0 || index > ArrayList.counter)
  42.       throw new IndexOutOfBoundsException("Invalid index")
  43.  
  44.     if (ArrayList.counter == ArrayList.size)
  45.       amortizedArray
  46.  
  47.     var i = index
  48.     val helpArr = new Array[T](ArrayList.counter - index)
  49.  
  50.     while (i < ArrayList.counter)
  51.       {
  52.         helpArr(i-index) = arr(i)
  53.         i+=1
  54.       }
  55.  
  56.  
  57.     ArrayList.counter+=1
  58.     val tmpIndex= index + 1
  59.     i = tmpIndex
  60.  
  61.     while (i < ArrayList.counter) {
  62.       arr(i) = helpArr(i - tmpIndex)
  63.       i+=1
  64.     }
  65.  
  66.     while (i < ArrayList.counter)
  67.      {
  68.        val tmp = arr(i+1)
  69.        arr(i+1) = tmp
  70.       i+=1
  71.      }
  72.  
  73.     arr(index) = elem
  74.   }
  75.  
  76.   def print : Unit=
  77.     {
  78.       var i = 0
  79.       while(i < ArrayList.counter)
  80.         {
  81.           println(arr(i))
  82.           i+=1
  83.         }
  84.  
  85.       println("")
  86.     }
  87.  
  88.   def contains (elem: T) : Boolean =
  89.     {
  90.       arr.contains(elem)
  91.     }
  92.  
  93.   def remove (index: Int) : Unit =
  94.     {
  95.       if(index < 0 || index >= ArrayList.counter)
  96.         throw  new IndexOutOfBoundsException("Invalid index")
  97.  
  98.       ArrayList.counter-=1
  99.  
  100.       var i = index
  101.       while(i < ArrayList.counter)
  102.         {
  103.           arr(i) = arr(i+1)
  104.           i+=1
  105.         }
  106.  
  107.     }
  108.  
  109. }
  110.  
  111.  
  112. object Tester {
  113.   def main(args: Array[String]):Unit = {
  114.     val arrayList = new ArrayList[Int]()
  115.     println(arrayList.isEmpty)
  116.  
  117.     arrayList.add(1)
  118.     arrayList.add(2)
  119.     arrayList.add(3)
  120.     arrayList.add(4)
  121.     arrayList.add(5)
  122.     arrayList.add(6)
  123.  
  124.     arrayList.print
  125.  
  126.     arrayList.add(2, 99)
  127.  
  128.     arrayList.print
  129.  
  130.     println(arrayList.contains(99))
  131.     println(arrayList.contains(3))
  132.  
  133.     println(arrayList.isEmpty)
  134.  
  135.     arrayList.remove(2)
  136.  
  137.     arrayList.print
  138.   }
  139. }
Add Comment
Please, Sign In to add comment