美文网首页
commons-collections 之 MultiValue

commons-collections 之 MultiValue

作者: 躺在家里干活 | 来源:发表于2019-10-08 09:48 被阅读0次

    作用:可以为一个key,指定一个value集合

    注:MultiMap具有同样的功能,但是4.1之后推荐使用MultiValuedMap

    • 内部实现:通过维护Collection的value值实现,参考AbstractMultiValuedMap
    • 比如 Collection<V> valuesView; 实际上就是 Values extends AbstractCollection<V>
    • 其它的实现也就像这样,使用继承实现自己独有的逻辑
    public abstract class AbstractMultiValuedMap<K, V> implements MultiValuedMap<K, V> {
    
        /** The values view */
        private transient Collection<V> valuesView;
    
        /** The EntryValues view */
        private transient EntryValues entryValuesView;
    
        /** The KeyMultiSet view */
        private transient MultiSet<K> keysMultiSetView;
    
        /** The AsMap view */
        private transient AsMap asMapView;
    
        /** The map used to store the data */
        private transient Map<K, Collection<V>> map;
        
        /**
         * Inner class that provides the values view.
         */
        private class Values extends AbstractCollection<V> {
            @Override
            public Iterator<V> iterator() {
                final IteratorChain<V> chain = new IteratorChain<V>();
                for (final K k : keySet()) {
                    chain.addIterator(new ValuesIterator(k));
                }
                return chain;
            }
    
            @Override
            public int size() {
                return AbstractMultiValuedMap.this.size();
            }
    
            @Override
            public void clear() {
                AbstractMultiValuedMap.this.clear();
            }
        }
    

    我的个人博客,有空来坐坐

    相关文章

      网友评论

          本文标题:commons-collections 之 MultiValue

          本文链接:https://www.haomeiwen.com/subject/fotbyctx.html