public class MyDynamicArray(var length: Int = 0, var capacity : Int = 1, var data: Array<String?> = arrayOfNulls(1)) {
// gets element at the given index
fun get(index: Int) : String? {
return if(index >= 0 && index < length) data[index] else "IndexOutOfBounds"
}
// this method adds an element to the end of array
fun push(element: String) {
capacity++
val tempArray = arrayOfNulls<String>(capacity)
for(i in data.indices) {
tempArray[i] = data[i]
}
data = tempArray
data[length] = element
length++
}
// replaces value at given index
fun replace(index: Int, element: String) {
if(index >= 0 && index < length) {
data[index] = element
} else {
println("IndexOutOfBounds")
}
}
// removes last item on array
fun pop() {
if(length > 0) {
length--
} else {
println("Array size cannot be lower than 0!")
}
}
// deletes element at the given index
fun delete(index: Int) {
if(index >= 0 && index < length) {
if(index == length - 1) {
pop()
} else {
for(i in index until length) {
data[i] = data[i + 1]
}
length--
}
} else {
println("IndexOutOfBounds")
}
}
// gets the array
fun getArray() : Array<String?> {
val tempArray = arrayOfNulls<String>(length)
for(i in 0 until length) {
tempArray[i] = data[i]
}
return tempArray
}
}
fun main(args : Array<String>){
val myArray = MyDynamicArray()
myArray.push("Cansu")
myArray.push("Yeksan")
myArray.push("Aktas")
myArray.replace(2, "Akt")
println(myArray.get(2))
myArray.delete(2)
println(myArray.get(1))
println(myArray.getArray().contentToString())
}