HashOjbect之HashObjectMap(一)

HashOjbect之HashObjectMap(1)
import java.util.AbstractCollection;
import java.util.Collection;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.Set;
import org.apache.log4j.Logger;
/**
* 该类是HashMap的一个简化实现类。该类不是线程安全的。
* 主要实现了以Key值来Hash数据和查找数据。
* 如果两个HashObject的Key值相等,则会返回该对象或覆盖该对象。
*
* @param <T>
*/
public class HashObjectMap<T extends BaseHashObject> {
transient BaseHashObject [] table;

transient int size;

static final int DEFAULT_INITIAL_CAPACITY = 16;

    static final int MAXIMUM_CAPACITY = 1 << 30;

    static final float DEFAULT_LOAD_FACTOR = 0.75f;

    int threshold;

    final float loadFactor;

    transient volatile int modCount;
   
    private static final Logger logger = Logger.getLogger(HashObjectMap.class);
   
public HashObjectMap(int initialCapacity, float loadFactor)
{
if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal initial capacity: " +
                                               initialCapacity);
        if (initialCapacity > MAXIMUM_CAPACITY)
            initialCapacity = MAXIMUM_CAPACITY;
        if (loadFactor <= 0 || Float.isNaN(loadFactor))
            throw new IllegalArgumentException("Illegal load factor: " +
                                               loadFactor);

        // Find a power of 2 >= initialCapacity
        int capacity = 1;
        while (capacity < initialCapacity)
            capacity <<= 1;

        this.loadFactor = loadFactor;
        threshold = (int)(capacity * loadFactor);
        table = new BaseHashObject[capacity];
        init();
}