Kotlin has nice extensions on Collection classes. JDK has provided developers a way to sort collections for a long time now, but often times, it’s done with external classes such as Collections. This puts us in a odd position of using procedural programming when performing operations such as sorting a collection.
A more OOP approach would be to have a sort method directly on a Collection as opposed to passing a collection to an external class with a static method. Kotlin extends Java collections by using its extension feature to complement the collection classes found in JDK.
Here is an example that demonstrates how to sort an ArrayList in Java.
fun task12(): List { val lst = arrayListOf(1, 5, 2) lst.sortDescending() return lst }
If all fairness to Java, JDK 8 did address this issue. Here is the equivalent Java code that does the same thing.
public class CollectionSort { public List sortList(){ List lst = Arrays.asList(1, 5, 2); lst.sort(Comparator.reverseOrder()); return lst; } }
I’m not going to complain too much about the Java 8 syntax, but I think sortDescending() and sortAcending() is more readable than Comparator.natualOrder() and Comparator.reverseOrder(). However, the Kotlin approach is much superior to JDK 7 and earlier.
You can read the previous post here.
One thought on “Kotlin Koan—Part 13”