⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstracthashedmap.java

📁 rule engine drools-2.0-beta-18
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        }        else        {            while ( newCapacity < proposedCapacity )            {                newCapacity <<= 1; // multiply by two            }            if ( newCapacity > MAXIMUM_CAPACITY )            {                newCapacity = MAXIMUM_CAPACITY;            }        }        return newCapacity;    }    /**     * Calculates the new threshold of the map, where it will be resized. This     * implementation uses the load factor.     *     * @param newCapacity     *            the new capacity     * @param factor     *            the load factor     * @return the new resize threshold     */    protected int calculateThreshold(int newCapacity,                                     float factor)    {        return (int) (newCapacity * factor);    }    // -----------------------------------------------------------------------    /**     * Gets the <code>next</code> field from a <code>HashEntry</code>. Used     * in subclasses that have no visibility of the field.     *     * @param entry     *            the entry to query, must not be null     * @return the <code>next</code> field of the entry     * @throws NullPointerException     *             if the entry is null     * @since Commons Collections 3.1     */    protected HashEntry entryNext(HashEntry entry)    {        return entry.next;    }    /**     * Gets the <code>hashCode</code> field from a <code>HashEntry</code>.     * Used in subclasses that have no visibility of the field.     *     * @param entry     *            the entry to query, must not be null     * @return the <code>hashCode</code> field of the entry     * @throws NullPointerException     *             if the entry is null     * @since Commons Collections 3.1     */    protected int entryHashCode(HashEntry entry)    {        return entry.hashCode;    }    /**     * Gets the <code>key</code> field from a <code>HashEntry</code>. Used     * in subclasses that have no visibility of the field.     *     * @param entry     *            the entry to query, must not be null     * @return the <code>key</code> field of the entry     * @throws NullPointerException     *             if the entry is null     * @since Commons Collections 3.1     */    protected Object entryKey(HashEntry entry)    {        return entry.key;    }    /**     * Gets the <code>value</code> field from a <code>HashEntry</code>.     * Used in subclasses that have no visibility of the field.     *     * @param entry     *            the entry to query, must not be null     * @return the <code>value</code> field of the entry     * @throws NullPointerException     *             if the entry is null     * @since Commons Collections 3.1     */    protected Object entryValue(HashEntry entry)    {        return entry.value;    }    // -----------------------------------------------------------------------    /**     * Gets an iterator over the map. Changes made to the iterator affect this     * map.     * <p>     * A MapIterator returns the keys in the map. It also provides convenient     * methods to get the key and value, and set the value. It avoids the need     * to create an entrySet/keySet/values object. It also avoids creating the     * Map.Entry object.     *     * @return the map iterator     */    private MapIterator mapIterator()    {        if ( size == 0 )        {            return EmptyMapIterator.INSTANCE;        }        return new HashMapIterator( this );    }    /**     * MapIterator implementation.     */    protected static class HashMapIterator extends HashIterator        implements        MapIterator    {        protected HashMapIterator(AbstractHashedMap parent)        {            super( parent );        }        public Object next()        {            return super.nextEntry( ).getKey( );        }        public Object getKey()        {            HashEntry current = currentEntry( );            if ( current == null )            {                throw new IllegalStateException( AbstractHashedMap.GETKEY_INVALID );            }            return current.getKey( );        }        public Object getValue()        {            HashEntry current = currentEntry( );            if ( current == null )            {                throw new IllegalStateException( AbstractHashedMap.GETVALUE_INVALID );            }            return current.getValue( );        }        public Object setValue(Object value)        {            HashEntry current = currentEntry( );            if ( current == null )            {                throw new IllegalStateException( AbstractHashedMap.SETVALUE_INVALID );            }            return current.setValue( value );        }    }    // -----------------------------------------------------------------------    /**     * Gets the entrySet view of the map. Changes made to the view affect this     * map. To simply iterate through the entries, use {@link #mapIterator()}.     *     * @return the entrySet view     */    public Set entrySet()    {        if ( entrySet == null )        {            entrySet = new EntrySet( this );        }        return entrySet;    }    /**     * Creates an entry set iterator. Subclasses can override this to return     * iterators with different properties.     *     * @return the entrySet iterator     */    protected Iterator createEntrySetIterator()    {        if ( size( ) == 0 )        {            return Collections.EMPTY_MAP.keySet( ).iterator( );        }        return new EntrySetIterator( this );    }    /**     * EntrySet implementation.     */    protected static class EntrySet extends AbstractSet    {        /** The parent map */        protected final AbstractHashedMap parent;        protected EntrySet(AbstractHashedMap parent)        {            super( );            this.parent = parent;        }        public int size()        {            return parent.size( );        }        public void clear()        {            parent.clear( );        }        public boolean contains(Object entry)        {            if ( entry instanceof Map.Entry )            {                Map.Entry e = (Map.Entry) entry;                Entry match = parent.getEntry( e.getKey( ) );                return (match != null && match.equals( e ));            }            return false;        }        public boolean remove(Object obj)        {            if ( obj instanceof Map.Entry == false )            {                return false;            }            if ( contains( obj ) == false )            {                return false;            }            Map.Entry entry = (Map.Entry) obj;            Object key = entry.getKey( );            parent.remove( key );            return true;        }        public Iterator iterator()        {            return parent.createEntrySetIterator( );        }    }    /**     * EntrySet iterator.     */    protected static class EntrySetIterator extends HashIterator    {        protected EntrySetIterator(AbstractHashedMap parent)        {            super( parent );        }        public Object next()        {            return super.nextEntry( );        }    }    // -----------------------------------------------------------------------    /**     * Gets the keySet view of the map. Changes made to the view affect this     * map. To simply iterate through the keys, use {@link #mapIterator()}.     *     * @return the keySet view     */    public Set keySet()    {        if ( keySet == null )        {            keySet = new KeySet( this );        }        return keySet;    }    /**     * Creates a key set iterator. Subclasses can override this to return     * iterators with different properties.     *     * @return the keySet iterator     */    protected Iterator createKeySetIterator()    {        if ( size( ) == 0 )        {            return Collections.EMPTY_MAP.keySet().iterator();        }        return new KeySetIterator( this );    }    /**     * KeySet implementation.     */    protected static class KeySet extends AbstractSet    {        /** The parent map */        protected final AbstractHashedMap parent;        protected KeySet(AbstractHashedMap parent)        {            super( );            this.parent = parent;        }        public int size()        {            return parent.size( );        }        public void clear()        {            parent.clear( );        }        public boolean contains(Object key)        {            return parent.containsKey( key );        }        public boolean remove(Object key)        {            boolean result = parent.containsKey( key );            parent.remove( key );            return result;        }        public Iterator iterator()        {            return parent.createKeySetIterator( );        }    }    /**     * KeySet iterator.     */    protected static class KeySetIterator extends EntrySetIterator    {        protected KeySetIterator(AbstractHashedMap parent)        {            super( parent );        }        public Object next()        {            return super.nextEntry( ).getKey( );        }    }    // -----------------------------------------------------------------------    /**     * Gets the values view of the map. Changes made to the view affect this     * map. To simply iterate through the values, use {@link #mapIterator()}.     *     * @return the values view     */    public Collection values()    {        if ( values == null )        {            values = new Values( this );        }        return values;    }    /**     * Creates a values iterator. Subclasses can override this to return     * iterators with different properties.     *     * @return the values iterator     */    protected Iterator createValuesIterator()    {        if ( size( ) == 0 )        {            return Collections.EMPTY_MAP.keySet().iterator();        }        return new ValuesIterator( this );    }    /**     * Values implementation.     */    protected static class Values extends AbstractCollection    {        /** The parent map */        protected final AbstractHashedMap parent;        protected Values(AbstractHashedMap parent)        {            super( );            this.parent = parent;        }        public int size()        {            return parent.size( );        }        public void clear()        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -