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
>>> 
>> 

Reply via email to