KT-16602: Improve mutable sorting samples, fix sample references

This commit is contained in:
Ilya Gorbunov
2019-07-12 21:26:38 +03:00
parent 38d26b1d92
commit 4fc942c5e9
5 changed files with 58 additions and 27 deletions
@@ -137,20 +137,20 @@ class Arrays {
fun sortArray() {
val intArray = intArrayOf(4, 3, 2, 1)
// before sorting
assertPrints(intArray.joinToString(), "4, 3, 2, 1")
intArray.sort()
// after sorting
assertPrints(intArray.joinToString(), "1, 2, 3, 4")
}
@Sample
fun sortArrayOfComparable() {
data class Person(val firstName: String, val lastName: String) : Comparable<Person> {
override fun compareTo(other: Person): Int {
return lastName.compareTo(other.lastName)
}
class Person(val firstName: String, val lastName: String) : Comparable<Person> {
override fun compareTo(other: Person): Int = this.lastName.compareTo(other.lastName)
override fun toString(): String = "$firstName $lastName"
}
val people = arrayOf(
@@ -159,11 +159,13 @@ class Arrays {
Person("Sweyn", "Forkbeard")
)
assertPrints(people.joinToString(), "Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Sweyn, lastName=Forkbeard)")
// before sorting
assertPrints(people.joinToString(), "Ragnar Lodbrok, Bjorn Ironside, Sweyn Forkbeard")
people.sort()
assertPrints(people.joinToString(), "Person(firstName=Sweyn, lastName=Forkbeard), Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Ragnar, lastName=Lodbrok)")
// after sorting
assertPrints(people.joinToString(), "Sweyn Forkbeard, Bjorn Ironside, Ragnar Lodbrok")
}
@@ -171,13 +173,37 @@ class Arrays {
fun sortRangeOfArray() {
val intArray = intArrayOf(4, 3, 2, 1)
// before sorting
assertPrints(intArray.joinToString(), "4, 3, 2, 1")
intArray.sort(0, 3)
// after sorting
assertPrints(intArray.joinToString(), "2, 3, 4, 1")
}
@Sample
fun sortRangeOfArrayOfComparable() {
class Person(val firstName: String, val lastName: String) : Comparable<Person> {
override fun compareTo(other: Person): Int = this.lastName.compareTo(other.lastName)
override fun toString(): String = "$firstName $lastName"
}
val people = arrayOf(
Person("Ragnar", "Lodbrok"),
Person("Bjorn", "Ironside"),
Person("Sweyn", "Forkbeard")
)
// before sorting
assertPrints(people.joinToString(), "Ragnar Lodbrok, Bjorn Ironside, Sweyn Forkbeard")
people.sort(0, 2)
// after sorting
assertPrints(people.joinToString(), "Bjorn Ironside, Ragnar Lodbrok, Sweyn Forkbeard")
}
}
}
@@ -568,33 +568,32 @@ class Collections {
fun sortMutableList() {
val mutableList = mutableListOf(4, 3, 2, 1)
// before sorting
assertPrints(mutableList.joinToString(), "4, 3, 2, 1")
mutableList.sort()
// after sorting
assertPrints(mutableList.joinToString(), "1, 2, 3, 4")
}
@Sample
fun sortRangeOfComparable() {
data class Person(val firstName: String, val lastName: String) : Comparable<Person> {
override fun compareTo(other: Person): Int {
return lastName.compareTo(other.lastName)
}
fun sortMutableListWith() {
// non-comparable class
class Person(val firstName: String, val lastName: String) {
override fun toString(): String = "$firstName $lastName"
}
val people = arrayOf(
val people = mutableListOf(
Person("Ragnar", "Lodbrok"),
Person("Bjorn", "Ironside"),
Person("Sweyn", "Forkbeard")
)
assertPrints(people.joinToString(), "Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Sweyn, lastName=Forkbeard)")
people.sortWith(compareByDescending { it.firstName })
people.sort(0, 2)
assertPrints(people.joinToString(), "Person(firstName=Bjorn, lastName=Ironside), Person(firstName=Ragnar, lastName=Lodbrok), Person(firstName=Sweyn, lastName=Forkbeard)")
// after sorting
assertPrints(people.joinToString(), "Sweyn Forkbeard, Ragnar Lodbrok, Bjorn Ironside")
}
}