diff options
Diffstat (limited to 'src/com/android/launcher3/util/IntSet.java')
-rw-r--r-- | src/com/android/launcher3/util/IntSet.java | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/src/com/android/launcher3/util/IntSet.java b/src/com/android/launcher3/util/IntSet.java index 851f129a51..4fd06fe24f 100644 --- a/src/com/android/launcher3/util/IntSet.java +++ b/src/com/android/launcher3/util/IntSet.java @@ -16,11 +16,13 @@ package com.android.launcher3.util; import java.util.Arrays; +import java.util.Iterator; /** * A wrapper over IntArray implementing a growing set of int primitives. + * The elements in the array are sorted in ascending order. */ -public class IntSet { +public class IntSet implements Iterable<Integer> { final IntArray mArray = new IntArray(); @@ -34,6 +36,25 @@ public class IntSet { } } + /** + * Appends the specified IntSet's values to the set if they does not exist, then returns the + * original set that now also contains the new values. + */ + public IntSet addAll(IntSet other) { + other.forEach(this::add); + return this; + } + + /** + * Removes the specified value from the set if it exist. + */ + public void remove(int value) { + int index = Arrays.binarySearch(mArray.mValues, 0, mArray.mSize, value); + if (index >= 0) { + mArray.removeIndex(index); + } + } + public boolean contains(int value) { return Arrays.binarySearch(mArray.mValues, 0, mArray.mSize, value) >= 0; } @@ -61,6 +82,9 @@ public class IntSet { return (obj instanceof IntSet) && ((IntSet) obj).mArray.equals(mArray); } + /** + * Returns the wrapped IntArray. The elements in the array are sorted in ascending order. + */ public IntArray getArray() { return mArray; } @@ -78,4 +102,30 @@ public class IntSet { Arrays.sort(set.mArray.mValues, 0, set.mArray.mSize); return set; } + + /** + * Returns an IntSet with the given values. + */ + public static IntSet wrap(int... array) { + return wrap(IntArray.wrap(array)); + } + + /** + * Returns an IntSet with the given values. + */ + public static IntSet wrap(Iterable<Integer> iterable) { + IntSet set = new IntSet(); + iterable.forEach(set::add); + return set; + } + + @Override + public Iterator<Integer> iterator() { + return mArray.iterator(); + } + + @Override + public String toString() { + return "IntSet{" + mArray.toConcatString() + '}'; + } } |