Hi Xiaogang, I think maybe return Set<Map.Entry<K,V>> is better than Iterator<Map.Entry<K,V>>. Because users can use foreach on Set but not Iterator, and can use iterator access via set.iterator(). Maybe Map.entrySet() is a more familiar way to users.
- Jark Wu > 在 2016年10月19日,下午5:18,SHI Xiaogang <shixiaoga...@gmail.com> 写道: > > 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 >>> >>