I’ve pushed the first release of Dexx Collections (https://github.com/andrewoma/dexx) to Maven Central.
It’s essentially a port of Scala’s core collection classes to pure Java.
While the implementation is pure Java, the classes have been annotated with JetBrains’ @NotNull and @Nullable to make them fairly pleasant to use from Kotlin.
Scala’s collections were the main thing I missed when moving from Scala to Kotlin - so hopefully this will fill the gap for some of you as well.
It’s a first release, so I expect there will be some issues, but the release has been tested fairly extensively (line coverage is around 94% at present).
For those of you not familiar with persisent collections, the key concept is that all references to collections are immutable, but modifications can be made by returning a new collection (which usually shares the bulk of the original collection’s structure).
Here’s an example (set1 remains in the original state despite “modifications”):
val set1 = Sets.of(1, 2, 3) val set2 = set1.add(4) val set3 = set1.remove(1) println(set1) // Prints Set(1, 2, 3) println(set2) // Prints Set(1, 2, 3, 4) println(set3) // Prints Set(2, 3)
See https://github.com/andrewoma/dexx for more information.