Add SparseLongArray.incrementValue()
This method is used for accumulation of long values: if the key does not exist, one is created. If one already exists, the passed value is added to the previous value. This method is similar to the existing SparseDoubleArray.incrementValue() method Bug: 215427055 Test: atest FrameworksCoreTests:SparseLongArrayTest Change-Id: I771d9bc2bdd12ca4260b20186ced70f5862b6f56
This commit is contained in:
@@ -105,7 +105,7 @@ public class SparseDoubleArray implements Cloneable {
|
||||
* <p>This differs from {@link #put} because instead of replacing any previous value, it adds
|
||||
* (in the numerical sense) to it.
|
||||
*/
|
||||
public void add(int key, double summand) {
|
||||
public void incrementValue(int key, double summand) {
|
||||
final double oldValue = get(key);
|
||||
put(key, oldValue + summand);
|
||||
}
|
||||
|
||||
@@ -163,6 +163,30 @@ public class SparseLongArray implements Cloneable {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a mapping from the specified key to the specified value,
|
||||
* <b>adding</b> its value to the previous mapping from the specified key if there
|
||||
* was one.
|
||||
*
|
||||
* <p>This differs from {@link #put} because instead of replacing any previous value, it adds
|
||||
* (in the numerical sense) to it.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void incrementValue(int key, long summand) {
|
||||
int i = ContainerHelpers.binarySearch(mKeys, mSize, key);
|
||||
|
||||
if (i >= 0) {
|
||||
mValues[i] += summand;
|
||||
} else {
|
||||
i = ~i;
|
||||
|
||||
mKeys = GrowingArrayUtils.insert(mKeys, mSize, i, key);
|
||||
mValues = GrowingArrayUtils.insert(mValues, mSize, i, summand);
|
||||
mSize++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of key-value mappings that this SparseLongArray
|
||||
* currently stores.
|
||||
|
||||
@@ -12828,7 +12828,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
}
|
||||
}
|
||||
|
||||
uidEstimatedConsumptionMah.add(u.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(u.getUid(),
|
||||
mWifiPowerCalculator.calcPowerWithoutControllerDataMah(
|
||||
entry.rxPackets, entry.txPackets,
|
||||
uidRunningMs, uidScanMs, uidBatchScanMs));
|
||||
@@ -12955,7 +12955,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
double uidEstMah = mWifiPowerCalculator.calcPowerFromControllerDataMah(
|
||||
scanRxTimeSinceMarkMs, scanTxTimeSinceMarkMs, myIdleTimeMs);
|
||||
uidEstimatedConsumptionMah.add(uid.getUid(), uidEstMah);
|
||||
uidEstimatedConsumptionMah.incrementValue(uid.getUid(), uidEstMah);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12977,7 +12977,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
uid.getOrCreateWifiControllerActivityLocked().getOrCreateTxTimeCounters()[0]
|
||||
.increment(myTxTimeMs, elapsedRealtimeMs);
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(uid.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(uid.getUid(),
|
||||
mWifiPowerCalculator.calcPowerFromControllerDataMah(
|
||||
0, myTxTimeMs, 0));
|
||||
}
|
||||
@@ -12996,7 +12996,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
uid.getOrCreateWifiControllerActivityLocked().getOrCreateRxTimeCounter()
|
||||
.increment(myRxTimeMs, elapsedRealtimeMs);
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(uid.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(uid.getUid(),
|
||||
mWifiPowerCalculator.calcPowerFromControllerDataMah(
|
||||
myRxTimeMs, 0, 0));
|
||||
}
|
||||
@@ -13224,7 +13224,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
// Distribute measured mobile radio charge consumption based on app radio
|
||||
// active time
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(u.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(u.getUid(),
|
||||
mMobileRadioPowerCalculator.calcPowerFromRadioActiveDurationMah(
|
||||
appRadioTimeUs / 1000));
|
||||
}
|
||||
@@ -13479,7 +13479,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
.increment(scanTimeTxSinceMarkMs, elapsedRealtimeMs);
|
||||
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(u.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(u.getUid(),
|
||||
mBluetoothPowerCalculator.calculatePowerMah(
|
||||
scanTimeRxSinceMarkMs, scanTimeTxSinceMarkMs, 0));
|
||||
}
|
||||
@@ -13546,7 +13546,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
counter.getOrCreateRxTimeCounter().increment(timeRxMs, elapsedRealtimeMs);
|
||||
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(u.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(u.getUid(),
|
||||
mBluetoothPowerCalculator.calculatePowerMah(timeRxMs, 0, 0));
|
||||
}
|
||||
}
|
||||
@@ -13560,7 +13560,7 @@ public class BatteryStatsImpl extends BatteryStats {
|
||||
.increment(timeTxMs, elapsedRealtimeMs);
|
||||
|
||||
if (uidEstimatedConsumptionMah != null) {
|
||||
uidEstimatedConsumptionMah.add(u.getUid(),
|
||||
uidEstimatedConsumptionMah.incrementValue(u.getUid(),
|
||||
mBluetoothPowerCalculator.calculatePowerMah(0, timeTxMs, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,12 +64,12 @@ public class SparseDoubleArrayTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAdd() {
|
||||
public void testIncrementValue() {
|
||||
final SparseDoubleArray sda = new SparseDoubleArray();
|
||||
|
||||
sda.put(4, 6.1);
|
||||
sda.add(4, -1.2);
|
||||
sda.add(2, -1.2);
|
||||
sda.incrementValue(4, -1.2);
|
||||
sda.incrementValue(2, -1.2);
|
||||
|
||||
assertEquals(6.1 - 1.2, sda.get(4), PRECISION);
|
||||
assertEquals(-1.2, sda.get(2), PRECISION);
|
||||
|
||||
@@ -154,4 +154,16 @@ public class SparseLongArrayTest {
|
||||
assertRemoved(startIndex, endIndex);
|
||||
assertTrue(isSame(sparseLongArray2, mSparseLongArray));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testIncrementValue() {
|
||||
final SparseLongArray sla = new SparseLongArray();
|
||||
|
||||
sla.put(4, 6);
|
||||
sla.incrementValue(4, 4);
|
||||
sla.incrementValue(2, 5);
|
||||
|
||||
assertEquals(6 + 4, sla.get(4));
|
||||
assertEquals(5, sla.get(2));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user