Shrink our capacity by half if, after removing an element, it is bigger
than the default capacity and we're using less than 1/8th of it. git-svn-id: https://samskivert.googlecode.com/svn/trunk@1799 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -57,7 +57,7 @@ public class ArrayIntSet extends AbstractSet
|
|||||||
*/
|
*/
|
||||||
public ArrayIntSet ()
|
public ArrayIntSet ()
|
||||||
{
|
{
|
||||||
this(16);
|
this(DEFAULT_CAPACITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// documentation inherited from interface
|
// documentation inherited from interface
|
||||||
@@ -256,8 +256,20 @@ public class ArrayIntSet extends AbstractSet
|
|||||||
{
|
{
|
||||||
int index = binarySearch(value);
|
int index = binarySearch(value);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
System.arraycopy(_values, index+1, _values, index, --_size-index);
|
_size--;
|
||||||
_values[_size] = 0;
|
if ((_values.length > DEFAULT_CAPACITY) &&
|
||||||
|
(_size < _values.length/8)) {
|
||||||
|
// if we're using less than 1/8 of our capacity, shrink by half
|
||||||
|
int[] newVals = new int[_values.length/2];
|
||||||
|
System.arraycopy(_values, 0, newVals, 0, index);
|
||||||
|
System.arraycopy(_values, index+1, newVals, index, _size-index);
|
||||||
|
_values = newVals;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// shift entries past the removed one downwards
|
||||||
|
System.arraycopy(_values, index+1, _values, index, _size-index);
|
||||||
|
_values[_size] = 0;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -436,6 +448,9 @@ public class ArrayIntSet extends AbstractSet
|
|||||||
/** The number of elements in this set. */
|
/** The number of elements in this set. */
|
||||||
protected int _size;
|
protected int _size;
|
||||||
|
|
||||||
|
/** The default initial capacity of this set. */
|
||||||
|
protected static final int DEFAULT_CAPACITY = 16;
|
||||||
|
|
||||||
/** Change this if the fields or inheritance hierarchy ever changes
|
/** Change this if the fields or inheritance hierarchy ever changes
|
||||||
* (which is extremely unlikely). We override this because I'm tired
|
* (which is extremely unlikely). We override this because I'm tired
|
||||||
* of serialized crap not working depending on whether I compiled with
|
* of serialized crap not working depending on whether I compiled with
|
||||||
|
|||||||
Reference in New Issue
Block a user