Simple O(n) diffing library
This is a simple Kotlin library I built to try out the following tech stack:
- Kotlin (main language)
- Gradle - Kotlin DSL (build system)
- Spek (BDD style unit testing framework)
- Expekt (expectation style assertions)
The differ will take two collections, an old and new, and a lambda for extracting a Pair that:
- Represents a key for determining which values in the collections are for the same data element / field
- Represents the value for each element in the collection
importca.snasir.kdiff// Input datasetval oldCollection =listOf(Element(1, "a"), Element(2, "b"))
val newCollection =listOf(Element(2, "c"), Element(3, "d"))
// Instantiate the differ with a key-value extraction lambdaval differ =Differ({ it:Element->KeyValuePair(it.key, it.value) })
// Run differ in O(n) timeval diffs = differ.diffChanges(oldCollection, newCollection)The resulting diffs will be of type Changes<Int, String>.