Agreed.

contains(K key) should be provided.
The iterator() method should return Iterator<Map.Entry<K, V>> instead of
Iterator<Tuple2<K, V>>.

Besides, size() may also be provided.

With these methods, MapStates appear very similar to Java Maps. Users will
be very happy to use them.

Regards,
Xiaogang


2016-10-19 16:55 GMT+08:00 Till Rohrmann <trohrm...@apache.org>:

> Hi Xiaogang,
>
> I really like your proposal and think that this would be a valuable
> addition to Flink :-)
>
> For convenience we could maybe add contains(K key), too.
>
> Java's Map interface returns a Set of Entry when calling entrySet() (which
> is the equivalent of iterator() in our interface). The Entry interface not
> only allows to get access to the key and value of the map entry but also
> allows to set a value for the respective key via setValue (even though it's
> an optional operation). Maybe we want to offer something similar when
> getting access to the entry set via the iterator method.
>
> Cheers,
> Till
>
> On Wed, Oct 19, 2016 at 4:18 AM, SHI Xiaogang <shixiaoga...@gmail.com>
> wrote:
>
> > Hi, all. I created the JIRA https://issues.apache.org/
> > jira/browse/FLINK-4856 to
> > propose adding MapStates into Flink.
> >
> > MapStates are very useful in our daily jobs. For example, when
> implementing
> > DistinctCount, we store the values into a MapState and the result of each
> > group(key) is exactly the number of entries in the MapState.
> >
> > In my opinion, the methods provided by the MapState may include:
> > * void put(K key, V value)
> > * V get(K key)
> > * Iterable<K> keys()
> > * Iterable<V> values()
> > * Iterator<Tuple2<K, V>> iterator()
> >
> > Do you have any comments? Any is appreciated.
> >
> > Xiaogang
> >
>

Reply via email to