摘自 官网
说明
keyed state 接口提供不同 类型状态 的访问接口,这些状态都作用于当前输入数据的 key 下,即:keyBy 之后才能使用
状态类型
ValueState
ValueState<T>
保存一个值,该值可以 更新 和 访问 (每个值都对应到当前的输入数据的 key,因此算子接收到的每个 key 都可能对应一个值)。
这个值可以通过 update(T) 进行更新,通过 T value() 进行访问
ListState
ListState<T>
保存一个列表。可以往这个列表中 追加数据,并在当前的列表上进行 访问。
- 可以通过
add(T)或者addAll(List<T>)进行添加元素 - 通过
Iterable<T> get()获得整个列表 - 可以通过
update(List<T>)覆盖当前的列表
ReducingState
ReducingState<T>
保存一个单值,表示添加到状态的所有值的 聚合。
接口与 ListState 类似,但使用 add(T) 增加元素,会使用提供的 ReduceFunction 进行聚合。
AggregatingState
AggregatingState<IN, OUT>
保存一个单值,表示添加到状态的所有值的聚合。
和 ReducingState 不同的是, 聚合类型 可能与 添加到状态的 元素的类型 不同
接口与 ListState 类似,但使用 add(IN) 添加元素,用指定的 AggregateFunction 进行聚合。
MapState
MapState<UK, UV>
维护了一个 映射列表。 可以添加键值对到状态中,也可以获得反映当前所有映射的迭代器。
- 使用
put(UK,UV)或者putAll(Map<UK,UV>)添加映射。 - 使用
get(UK)检索特定 key。 - 使用
entries(),keys()和values()分别检索映射、键和值的可迭代视图。 - 还可以通过
isEmpty()来判断是否包含键值对