Merge "[SparseSetArray] optimize copy constructor" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-05-18 06:32:34 +00:00
committed by Android (Google) Code Review
2 changed files with 24 additions and 4 deletions

View File

@@ -38,10 +38,7 @@ public class SparseSetArray<T> {
for (int i = 0; i < arraySize; i++) { for (int i = 0; i < arraySize; i++) {
final int key = src.keyAt(i); final int key = src.keyAt(i);
final ArraySet<T> set = src.get(key); final ArraySet<T> set = src.get(key);
final int setSize = set.size(); addAll(key, set);
for (int j = 0; j < setSize; j++) {
add(key, set.valueAt(j));
}
} }
} }

View File

@@ -49,4 +49,27 @@ public class SparseSetArrayTest {
assertThat(sparseSetArray.size()).isEqualTo(5); assertThat(sparseSetArray.size()).isEqualTo(5);
} }
@Test
public void testCopyConstructor() {
final SparseSetArray<Integer> sparseSetArray = new SparseSetArray<>();
for (int i = 0; i < 10; ++i) {
for (int j = 100; j < 110; ++j) {
sparseSetArray.add(i, j);
}
}
final SparseSetArray<Integer> sparseSetArrayCopy = new SparseSetArray<>(sparseSetArray);
assertThat(sparseSetArray.size()).isEqualTo(sparseSetArrayCopy.size());
for (int i = 0; i < sparseSetArray.size(); ++i) {
final ArraySet<Integer> array = sparseSetArray.get(i);
final ArraySet<Integer> arrayCopy = sparseSetArrayCopy.get(i);
assertThat(array).isNotNull();
assertThat(arrayCopy).isNotNull();
assertThat(array.size()).isEqualTo(arrayCopy.size());
for (int j = 0; j < array.size(); j++) {
assertThat(array.valueAt(j)).isEqualTo(arrayCopy.valueAt(j));
}
}
}
} }