Reorder highest/lowest calculations - may fix issues with using remove()

This commit is contained in:
fullwall 2013-09-10 23:55:58 +08:00
parent c25a747500
commit 50a43d6116

View File

@ -107,16 +107,15 @@ public class ByIdArray<T> implements Iterable<T> {
public T remove(int index) {
if (index > elementData.length || elementData[index] == null)
return null;
@SuppressWarnings("unchecked")
T prev = (T) elementData[index];
elementData[index] = null;
--size;
++modCount;
if (index == highest)
recalcHighest();
if (index == lowest)
recalcLowest();
@SuppressWarnings("unchecked")
T prev = (T) elementData[index];
elementData[index] = null;
if (prev != null)
--size;
return prev;
}
@ -125,9 +124,10 @@ public class ByIdArray<T> implements Iterable<T> {
}
public void trimToSize() {
if (elementData.length > highest)
if (elementData.length > highest) {
elementData = Arrays.copyOf(elementData, highest + 1);
}
}
private class Itr implements Iterator<T> {
private int expected = ByIdArray.this.modCount;