FileDocCategorySizeDatePackage
TimeSparseArray.javaAPI DocAndroid 5.1 API2692Thu Mar 12 22:22:10 GMT 2015android.app.usage

TimeSparseArray

public class TimeSparseArray extends android.util.LongSparseArray
An array that indexes by a long timestamp, representing milliseconds since the epoch. {@hide}

Fields Summary
Constructors Summary
public TimeSparseArray()

        super();
    
public TimeSparseArray(int initialCapacity)

        super(initialCapacity);
    
Methods Summary
public intclosestIndexOnOrAfter(long time)
Finds the index of the first element whose timestamp is greater or equal to the given time.

param
time The timestamp for which to search the array.
return
The index of the matched element, or -1 if no such match exists.

        // This is essentially a binary search, except that if no match is found
        // the closest index is returned.
        final int size = size();
        int lo = 0;
        int hi = size - 1;
        int mid = -1;
        long key = -1;
        while (lo <= hi) {
            mid = lo + ((hi - lo) / 2);
            key = keyAt(mid);

            if (time > key) {
                lo = mid + 1;
            } else if (time < key) {
                hi = mid - 1;
            } else {
                return mid;
            }
        }

        if (time < key) {
            return mid;
        } else if (time > key && lo < size) {
            return lo;
        } else {
            return -1;
        }
    
public intclosestIndexOnOrBefore(long time)
Finds the index of the first element whose timestamp is less than or equal to the given time.

param
time The timestamp for which to search the array.
return
The index of the matched element, or -1 if no such match exists.

        final int index = closestIndexOnOrAfter(time);
        if (index < 0) {
            // Everything is larger, so we use the last element, or -1 if the list is empty.
            return size() - 1;
        }

        if (keyAt(index) == time) {
            return index;
        }
        return index - 1;