summaryrefslogtreecommitdiff
path: root/src/com/android/launcher3/util/IntSet.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/util/IntSet.java')
-rw-r--r--src/com/android/launcher3/util/IntSet.java52
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() + '}';
+ }
}