LinkedList: move toArray() as an extension method

This commit is contained in:
Denis-Cosmin Nutiu 2024-04-14 11:01:30 +03:00
parent e43fc8e7f0
commit 8ec2b4f2fe
2 changed files with 26 additions and 0 deletions

View file

@ -199,3 +199,14 @@ class LinkedList<T> : Iterable<Node<T>> {
return NodeIterator(this) return NodeIterator(this)
} }
} }
/**
* Converts the Linked List to an array.
*/
inline fun <reified E> LinkedList<E>.toArray(): Array<E?> {
val newArray = arrayOfNulls<E>(this.size())
this.forEachIndexed { i, node ->
newArray[i] = node.value
}
return newArray
}

View file

@ -1,6 +1,7 @@
package data_structures.linked_list package data_structures.linked_list
import dev.nuculabs.dsa.data_structures.linked_list.LinkedList import dev.nuculabs.dsa.data_structures.linked_list.LinkedList
import dev.nuculabs.dsa.data_structures.linked_list.toArray
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Assertions.*
@ -274,4 +275,18 @@ class LinkedListTest {
assertEquals("Fifth", linkedList.getFirst()) assertEquals("Fifth", linkedList.getFirst())
assertEquals("First", linkedList.getLast()) assertEquals("First", linkedList.getLast())
} }
@Test
fun toArray() {
// Setup
val linkedList = LinkedList<String>()
linkedList.append("First")
linkedList.append("Second")
// Test
val result = linkedList.toArray()
// Assert
assertContentEquals(arrayOf("First", "Second"), result)
}
} }