Hi,
If you ask about keyed state, you probably mean ListState<T>, because in any case List<T> is just java object for a concrete value of state. ListState<T> is also scoped by current record key as ValueState<T> but adds some list specific functionality. They are state object handles. Keyed state is also distributed by key, same way as record processing.
There is also an operator state types which are scoped by the operator, not by any record key. One of them also behaves similar to ListState<T> [1] but not per key. Operator state is distributed between parallel subtasks of the operator.
Best,
Andrey
I tried to test List[String] and ValueState[ModelBuffer[String]] and they behave very differently. Can you, please clarify the differences and usage patterns?