public void union(FastSet<E> set) { int[] extdata = set.getData(); int[] intdata = data; int minlength = Math.min(extdata.length, intdata.length); for (int i = minlength - 1; i >= 0; i--) { intdata[i] |= extdata[i]; } boolean expanded = false; for (int i = extdata.length - 1; i >= minlength; i--) { if (extdata[i] != 0) { if (!expanded) { intdata = ensureCapacity(extdata.length - 1); } intdata[i] = extdata[i]; } } }
public boolean equals(Object o) { if (o == this) return true; if (o == null || !(o instanceof FastSet)) return false; int[] longdata = ((FastSet)o).getData(); int[] shortdata = data; if (data.length > longdata.length) { shortdata = longdata; longdata = data; } for (int i = shortdata.length - 1; i >= 0; i--) { if (shortdata[i] != longdata[i]) { return false; } } for (int i = longdata.length - 1; i >= shortdata.length; i--) { if (longdata[i] != 0) { return false; } } return true; }
public boolean contains(FastSet<E> set) { int[] extdata = set.getData(); int[] intdata = data; int minlength = Math.min(extdata.length, intdata.length); for (int i = minlength - 1; i >= 0; i--) { if ((extdata[i] & ~intdata[i]) != 0) { return false; } } for (int i = extdata.length - 1; i >= minlength; i--) { if (extdata[i] != 0) { return false; } } return true; }
public void symdiff(FastSet<E> set) { int[] extdata = set.getData(); int[] intdata = data; int minlength = Math.min(extdata.length, intdata.length); for (int i = minlength - 1; i >= 0; i--) { intdata[i] ^= extdata[i]; } boolean expanded = false; for (int i = extdata.length - 1; i >= minlength; i--) { if (extdata[i] != 0) { if (!expanded) { intdata = ensureCapacity(extdata.length - 1); } intdata[i] = extdata[i]; } } }
public FastSet<E> spawnEmptySet() { return new FastSet<>(this); }
public void complement(FastSet<E> set) { int[] extdata = set.getData(); int[] intdata = data; int minlength = Math.min(extdata.length, intdata.length); for (int i = minlength - 1; i >= 0; i--) { intdata[i] &= ~extdata[i]; } }
public void removeAll(Set<E> set) { for (E element : set) { remove(element); } }
private FastSetIterator(FastSet<E> set) { colValuesInternal = set.getFactory().getInternalValuesCollection(); data = set.getData(); size = colValuesInternal.size(); int datasize = data.length * 32; if (datasize < size) { size = datasize; } }
public void addAll(Set<E> set) { for (E element : set) { add(element); } }
public void setAllElements() { int lastblock = factory.getLastBlock(); int lastmask = factory.getLastMask(); if (lastblock >= data.length) { ensureCapacity(lastblock); } for (int i = lastblock - 1; i >= 0; i--) { data[i] = 0xFFFFFFFF; } data[lastblock] = lastmask | (lastmask - 1); }
public void add(E element) { int[] index = colValuesInternal.getWithKey(element); if (index == null) { index = factory.addElement(element); } if (index[0] >= data.length) { ensureCapacity(index[0]); } data[index[0]] |= index[1]; }
public void intersection(FastSet<E> set) { int[] extdata = set.getData(); int[] intdata = data; int minlength = Math.min(extdata.length, intdata.length); for (int i = minlength - 1; i >= 0; i--) { intdata[i] &= extdata[i]; } for (int i = intdata.length - 1; i >= minlength; i--) { intdata[i] = 0; } }