diff options
| author | 2019-11-06 11:46:52 +0000 | |
|---|---|---|
| committer | 2019-11-06 12:07:14 +0000 | |
| commit | d06bcac213f671d76387655addfd6febe2b7a1e7 (patch) | |
| tree | cde3c472d384b662c5e9e9c361bae9f61429e1d7 | |
| parent | 3320ee5cc6526f31cfca49c1959b9d34c446dfdb (diff) | |
Shrink array at most once.
This removes worst-case N^2 behavior, does fewer allocations, and
seems easier to understand. (Admittedly the case where it matters is
probably rare.)
Test: atest PackageManagerTest
Change-Id: I62aa9d84a95a017269953e4e4f4c86e20a5a1838
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 340720e2f1fb..ba7f08cf7cc2 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5694,11 +5694,9 @@ public class PackageManagerService extends IPackageManager.Stub PackageSetting ps = it.next(); if (ps.getInstalled(userId)) { res[i++] = ps.name; - } else { - res = ArrayUtils.removeElement(String.class, res, res[i]); } } - return res; + return ArrayUtils.trimToSize(res, i); } else if (obj instanceof PackageSetting) { final PackageSetting ps = (PackageSetting) obj; if (ps.getInstalled(userId) |