31、简单图片处理
// 创建一个大小100*100像素的图片
var img = BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB)
// 设置图片的x为3,y为3的那个点为红色0xff0000
img.setRGB(3, 3, 0xff0000)
// 将图片对象写入a.bmp,生成真正的图片,图片位置就在本项目目录下
ImageIO.write(img, "bmp", File("a.bmp"))
// 如果想生成一个全红色的图片,怎么办?要循环给每个点设置颜色
for (x in 0 until 100) {
for (y in 0 until 100) {
img.setRGB(x, y, 0xff0000)
}
}
ImageIO.write(img, "bmp", File("b.bmp"))
32、高级函数
// 寻找里面的最大值,普通实现方法
// maxBy函数
var arrayOf = arrayOf("4", "1", "8", "20", "30", "15")
println(arrayOf.maxBy { it.toInt() }) // 结果是30
// filter函数
println(arrayOf.filter {
(it.toInt() > 10) and (it.toInt() % 2 == 0)
}) // 结果是[20, 30]
// map函数
println(arrayOf.map {
"it.toInt(): ${it.toInt()}"
})
// 结果是一个字符串集合
[it.toInt(): 4, it.toInt(): 1, it.toInt(): 8, it.toInt(): 20, it.toInt(): 15, it.toInt(): 30]
// any函数,是否包含符合所列条件的元素,返回值为false或者true
println(arrayOf.any {
it == "3"
}) // 结果false
// count函数
println(arrayOf.count {
it.toInt() % 2 == 0
}) // 结果 4,表示有4个符合条件的
// find函数,查找符合条件的第一个
println(arrayOf.find {
it.toInt() > 10
}) // 结果 20
// groupBy以什么作为分组依据进行分组
println(arrayOf.groupBy {
it.get(0) // 以首字母作为分组依据
}) // 结果 {4=[4], 1=[1, 15], 8=[8], 2=[20], 3=[30]}
33、扩展函数
提前准备点数据
1、创建一个Kotlin File文件
2、在文件里写入
// bean类
data class Girl(var name: String, var age: Int)
// 数据(List集合)
var 怡红院 = listOf<Girl>(
Girl("小丽", 18),
Girl("嘟嘟", 19),
Girl("小美", 21),
Girl("喵喵", 22),
Girl("lucy", 24),
Girl("HHH", 25),
Girl("千", 30)
)
// 扩展函数(给List<Girl>集合设定的扩展函数)
fun List<Girl>.查找年轻妹子年龄小于(age: Int) {
println(filter {
it.age < age
})
}
3、再创建一个测试用的Kotlin File文件,写上main方法
// 直接使用扩展函数即可
怡红院.查找年轻妹子年龄小于(20)
4、在扩展函数前加入infix(中缀表达式)
infix fun List<Girl>.查找年轻妹子年龄小于(age: Int) {
println(filter {
it.age < age
})
}
5、则可以这样使用
// 不再需要点和括号,而是换成空格
怡红院 查找年轻妹子年龄小于 20