Kotlin学习笔记(六)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值