Несколько примеров на Kotlin
Просто чтобы не забыть. Первый пример показывает работу с регулярными выражениями, второй - с null и получением элементов массива через лямбда-выражение.
fun main(args: Array<String>) {
//regex
val month = "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)"
fun getPattern(): String = """\d{2}\h$month\h\d{4}"""
val regex = Regex(getPattern())
val str ="12 DEC 1996"
val flag = regex.containsMatchIn(str)
if (flag)
println("{$str} is true!")
else
println("{$str} is wrong!")
//null
val listWithNulls: List<String?> = listOf("A", null, "B", "ERROR 404", null)
for (item in listWithNulls) {
item?.let {println(it)} ?: println("element is empty")
}
}
Работа с object expressions (аналог анонимных внутренних классов в Java, позволяет переопределять классы, расширять функциональность, реализовывать интерфейсы). Так же в примере показывается переопределение интерфейса Comparator, для реализации сортировки массива целых чисел в обратном порядке.
import java.util.*
fun getList(): List<Int> {
val arrayList = arrayListOf(1, 5, 2)
Collections.sort(arrayList, object : Comparator<Int> {
override fun compare(a: Int, b: Int) = b - a
})
return arrayList
}
Предыдущий пример, но с использование лямбда-выражения
import java.util.*
fun getList(): List<Int> {
val arrayList = arrayListOf(1, 5, 2)
Collections.sort(arrayList, { x, y -> y - x })
return arrayList
}
Наконец, тот же пример но с использованием библиотечной функции из Kotlin
fun getList(): List<Int> {
return arrayListOf(1, 5, 2).sortedDescending()
}
Кстати, вот схемка как “подправлены” коллекции в Kotlin. Подробнее read-only and mutable views on Java collections
03 06 2017