Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scala.reflect.ClassTag
- object ArrayList{
- var counter = 0
- var increaseFactor = 2
- var size = 0;
- }
- class ArrayList[T: ClassTag](private var initialSize: Int = 5) {
- ArrayList.size = initialSize
- var arr = new Array[T](5)
- def size:Int = ArrayList.counter
- def isEmpty:Boolean = ArrayList.counter == 0
- def amortizedArray:Unit = {
- var newArr = new Array[T](ArrayList.size*ArrayList.increaseFactor)
- var i = 0
- while (i < size)
- {
- newArr(i) = arr(i)
- i = i+1
- }
- arr = newArr
- ArrayList.size = ArrayList.size*ArrayList.increaseFactor
- }
- def add(elem: T) =
- {
- if (ArrayList.counter == ArrayList.size)
- amortizedArray
- arr(ArrayList.counter) = elem
- ArrayList.counter+=1
- }
- def add(index: Int, elem: T): Unit =
- {
- if(index < 0 || index > ArrayList.counter)
- throw new IndexOutOfBoundsException("Invalid index")
- if (ArrayList.counter == ArrayList.size)
- amortizedArray
- var i = index
- val helpArr = new Array[T](ArrayList.counter - index)
- while (i < ArrayList.counter)
- {
- helpArr(i-index) = arr(i)
- i+=1
- }
- ArrayList.counter+=1
- val tmpIndex= index + 1
- i = tmpIndex
- while (i < ArrayList.counter) {
- arr(i) = helpArr(i - tmpIndex)
- i+=1
- }
- while (i < ArrayList.counter)
- {
- val tmp = arr(i+1)
- arr(i+1) = tmp
- i+=1
- }
- arr(index) = elem
- }
- def print : Unit=
- {
- var i = 0
- while(i < ArrayList.counter)
- {
- println(arr(i))
- i+=1
- }
- println("")
- }
- def contains (elem: T) : Boolean =
- {
- arr.contains(elem)
- }
- def remove (index: Int) : Unit =
- {
- if(index < 0 || index >= ArrayList.counter)
- throw new IndexOutOfBoundsException("Invalid index")
- ArrayList.counter-=1
- var i = index
- while(i < ArrayList.counter)
- {
- arr(i) = arr(i+1)
- i+=1
- }
- }
- }
- object Tester {
- def main(args: Array[String]):Unit = {
- val arrayList = new ArrayList[Int]()
- println(arrayList.isEmpty)
- arrayList.add(1)
- arrayList.add(2)
- arrayList.add(3)
- arrayList.add(4)
- arrayList.add(5)
- arrayList.add(6)
- arrayList.print
- arrayList.add(2, 99)
- arrayList.print
- println(arrayList.contains(99))
- println(arrayList.contains(3))
- println(arrayList.isEmpty)
- arrayList.remove(2)
- arrayList.print
- }
- }
Add Comment
Please, Sign In to add comment