美文网首页
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