KeySelector对象可以支持元组类型,也可以支持POJO
元组类型
单个字段keyBy
//用字段位置(已经被废弃)
wordAndOne.keyBy(0)
//用字段表达式
wordAndOne.keyBy(v -> v.f0)
多个字段keyBy
//用字段位置
wordAndOne.keyBy(0, 1);
//用KeySelector
wordAndOne.keyBy(new KeySelector<Tuple2<String, Integer>, Tuple2<String, Integer>>() {
@Override
public Tuple2<String, Integer> getKey(Tuple2<String, Integer> value) throws Exception {
return Tuple2.of(value.f0, value.f1);
}
});
上述可用lambda简化
wordAndOne.keyBy(
(KeySelector<Tuple2<String, Integer>, Tuple2<String, Integer>>) value ->
Tuple2.of(value.f0, value.f1)
);
POJO
public class PeopleCount {
private String province;
private String city;
private Integer counts;
public PeopleCount() {
}
//省略其他代码。。。
}
单个字段keyBy
source.keyBy(a -> a.getProvince());
source.keyBy(PeopleCount::getProvince);
多个字段keyBy上述可用lambda简化
source.keyBy(new KeySelector<PeopleCount, Tuple2<String, String>>() {
@Override
public Tuple2<String, String> getKey(PeopleCount value) throws Exception {
return Tuple2.of(value.getProvince(), value.getCity());
}
});
上述可用lambda简化
map.keyBy(
(KeySelector<PeopleCount, Tuple2<String, String>>) value ->
Tuple2.of(value.getProvince(), value.getCity())
);
本文介绍了KeySelector对象在处理元组和Java对象(如POJO)时的关键字选择功能,特别强调了使用字段位置、表达式和Lambda简化过程。
4535

被折叠的 条评论
为什么被折叠?



