看文档,似乎我可以使用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,则可以直接检索列表。
答案 0 :(得分:1)
如果我只想为每个键存储一个值,则仅使用 ValueState 。您可以使用它来存储列表,但是代码将更加冗长。 如果使用 ValueState ,则必须获取值,更新列表并更新值,但是如果使用 ListState ,则可以直接对其进行管理