说明
max() 和 maxBy() 都是求最大值,但有区别
案例
输入下面格式的数据:
{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}
根据 name 进行 keyBy(),然后 根据 time 执行 max() 和 maxBy() 操作
max() 执行过程
第一次输入
在kafka控制输入下面内容:
{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}
执行结果
在 idea 控制台中打印结果如下:
1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 12:00:00 CST 2020}
解释:因为只有一条数据,所以就输出该条数据
第二次输入
在kafka控制输入下面内容:
{"name":"lili","url":"/lv.html","time":"2020-09-01 13:00:00"}
注意:用户名也是:lili,但时间是 2020-09-01 13:00:00
执行结果
在 idea 控制台中打印结果如下:
1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 13:00:00 CST 2020}
解释:输出结果中:
url是 第一个数据的time是 第二个数据的,因为第二个数据的time更晚
关键:这是 max() 的特点
maxBy
第一次输入
在kafka控制输入下面内容:
{"name":"lili","url":"/dior.html","time":"2020-09-01 12:00:00"}
执行结果
在 idea 控制台中打印结果如下:
1> UserLog{name='lili', url='/dior.html', time=Tue Sep 01 12:00:00 CST 2020}
解释:因为只有一条数据,所以就输出该条数据
第二次输入
在kafka控制输入下面内容:
{"name":"lili","url":"/lv.html","time":"2020-09-01 13:00:00"}
注意:用户名也是:lili,但时间是 2020-09-01 13:00:00
执行结果
在 idea 控制台中打印结果如下:
1> UserLog{name='lili', url='/lv.html', time=Tue Sep 01 13:00:00 CST 2020}
解释: 由于第二次输入的数据,time 较晚,所以输出结果是 第二次的数据
关键:这是 maxBy() 与 max() 的区别