예제 #1
0
        public ObjRefStoreSet(int initialCapacity, float loadFactor, IObjRefStoreEntryProvider objRefStoreEntryProvider)
        {
            this.loadFactor = loadFactor;
            this.objRefStoreEntryProvider = objRefStoreEntryProvider;

            if (initialCapacity < 0)
            {
                throw new ArgumentException("Illegal initial capacity: " + initialCapacity);
            }
            if (initialCapacity > MAXIMUM_CAPACITY)
            {
                initialCapacity = MAXIMUM_CAPACITY;
            }
            if (loadFactor <= 0 || Single.IsNaN(loadFactor))
            {
                throw new ArgumentException("Illegal load factor: " + loadFactor);
            }

            // Find a power of 2 >= initialCapacity
            int capacity = 1;

            while (capacity < initialCapacity)
            {
                capacity <<= 1;
            }

            threshold = (int)(capacity * loadFactor);
            table     = CreateTable(capacity);
        }
예제 #2
0
 public ObjRefStoreSet(IObjRefStoreEntryProvider objRefStoreEntryProvider)
     : this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, objRefStoreEntryProvider)
 {
 }