看看文档,似乎我可以使用ListState
或ValueState<List<String>>
来存储状态。例如下面的代码:
// Use ListState
ListStateDescriptor<String> lDescriptor = new ListStateDescriptor<String>
("testListState", TypeInformation.of(new TypeHint<String>() {}));
ListState<String> testListState = getRuntimeContext().getListState(lDescriptor);
// Use ValueState
ValueStateDescriptor<List<String>> testDescriptor =
new ValueStateDescriptor<List<String>>("testList",
TypeInformation.of(new TypeHint<List<String>>() {}));
ValueState<List<String>> testState = getRuntimeContext().getState(testDescriptor);
如果我需要存储与每个键相关联的唯一元素列表,那么使用其中一个键会有好处吗?如果我需要在保存列表之前修改它,那么使用ListState的缺点是首先将Iterable转换为List <>,而如果我使用ValueState,我可以直接检索列表。
如果我只想为每个键存储一个值,我只使用ValueState。您可以使用它来存储列表,但代码将更加冗长。如果使用ValueState,则必须获取值,更新列表并更新值,但如果使用ListState,则可以直接管理