什么是Lambda
- 调用一个函数,函数的参数是一个函数,这个函数可以动态修改
- 接口的方式,也就是回调
- 例如View的onClickListener方法,本质是一个可以稍后处理的onClick方法
- 参数是函数的、或者返回值是函数的都叫做高阶函数
- 函数当做参数传递给一个变量,需要添加 :: 这种写法叫做函数引用,添加之后不表示函数,表示一个对象,和函数一样具有相同功能


创建一个函数的对象的三种方式
Java1.8之后加入
集合的创建与遍历
固定大小的数组初始化使用listOf函数代替arrayList
```val list = ArrayList<String>()
list.add("Apple")
list.add("Banana")
list.add("Orange")
list.add("Pear")
list.add("Grape")
val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val list2 = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape")```
list1.forEach {
println(it)
}
HashMap
val map = HashMap<String, Int>()
map["Apple"] = 1
map["Banana"] = 2
val map1 = mapOf("Apple" to 1, "Banana" to 2)
for((name, index) in map1) {
println("$name$index")
}
找出数组中长度最长的元素
val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val listMaxLength = list1.maxBy { it.length }
映射为一个新的集合
val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val list2 = list1.map { it.toUpperCase(Locale.ROOT) }
过滤
val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val list2 = list1.map { it.toUpperCase(Locale.ROOT) }
val list3 = list1.filter {
it.length <= 5
}.map {
it.toUpperCase(Locale.ROOT)
}
any 至少存在一个满足条件 all 所有都满足条件
val list1 = listOf("Apple", "Banana", "Orange", "Pear", "Grape")
val anyResult = list1.any{
it.length <= 5
}
val allResult = list1.all {
it.length <= 5
}
Java函数式API与kotlin转换
private void newThread() {
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
}
Thread{
}.start()