[SparseSetArray] optimize copy constructor

BUG: 232347307
Test: atest android.util.SparseSetArrayTest
Change-Id: Ie046f557098ddc168b86523700cc06feede97e5e
This commit is contained in:
Songchun Fan
2022-05-16 19:25:59 +00:00
parent 96ad5ccad9
commit c0ac1d37d5
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++) {
final int key = src.keyAt(i);
final ArraySet<T> set = src.get(key);
final int setSize = set.size();
for (int j = 0; j < setSize; j++) {
add(key, set.valueAt(j));
}
addAll(key, set);
}
}

View File

@@ -49,4 +49,27 @@ public class SparseSetArrayTest {
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));
}
}
}
}