下面列出了怎么用android.util.SparseLongArray的API类实例代码及写法,或者点击链接到github查看源代码。
public CacheQuotaStrategy(
Context context, UsageStatsManagerInternal usageStatsManager, Installer installer,
ArrayMap<String, SparseLongArray> quotaMap) {
mContext = Preconditions.checkNotNull(context);
mUsageStats = Preconditions.checkNotNull(usageStatsManager);
mInstaller = Preconditions.checkNotNull(installer);
mQuotaMap = Preconditions.checkNotNull(quotaMap);
mPreviousValuesFile = new AtomicFile(new File(
new File(Environment.getDataDirectory(), "system"), "cachequota.xml"));
}
/**
* 判断对象是否为空
*
* @param obj 对象
* @return {@code true}: 为空<br>{@code false}: 不为空
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String && obj.toString().length() == 0) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
return false;
}
/**
* 判断对象是否为空
*
* @param obj 对象
* @return {@code true}: 为空<br>{@code false}: 不为空
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String && obj.toString().length() == 0) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
return false;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
@Test
public void isEmpty() throws Exception {
String string = "";
String string1 = " ";
int[][] arr = new int[][]{};
int[] arr1 = null;
LinkedList<Integer> list = new LinkedList<>();
HashMap<String,Integer> map = new HashMap<>();
SparseArray<String> sa = new SparseArray<>();
SparseBooleanArray sba = new SparseBooleanArray();
SparseIntArray sia = new SparseIntArray();
SparseLongArray sla = new SparseLongArray();
assertThat(EmptyUtils.isEmpty(string)).isTrue();
assertThat(EmptyUtils.isEmpty(string1)).isFalse();
assertThat(EmptyUtils.isEmpty(arr)).isTrue();
assertThat(EmptyUtils.isEmpty(arr1)).isTrue();
assertThat(EmptyUtils.isEmpty(list)).isTrue();
assertThat(EmptyUtils.isEmpty(map)).isTrue();
assertThat(EmptyUtils.isEmpty(sa)).isTrue();
assertThat(EmptyUtils.isEmpty(sba)).isTrue();
assertThat(EmptyUtils.isEmpty(sia)).isTrue();
assertThat(EmptyUtils.isEmpty(sla)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(string)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(string1)).isFalse();
assertThat(!EmptyUtils.isNotEmpty(arr)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(arr1)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(list)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(map)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(sa)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(sba)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(sia)).isTrue();
assertThat(!EmptyUtils.isNotEmpty(sla)).isTrue();
}
/**
* 判断对象是否为空
*
* @param obj 对象
* @return {@code true}: 为空<br>{@code false}: 不为空
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String && obj.toString().length() == 0) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
return false;
}
/**
* 判断对象是否为null或长度数量为0
*
* @param obj 对象
* @return {@code true}: 为空<br>{@code false}: 不为空
*/
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String && obj.toString().length() == 0) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
return false;
}
private DeviceClient(Context context) {
this.context = context;
googleApiClient = new GoogleApiClient.Builder(context).addApi(Wearable.API).build();
executorService = Executors.newCachedThreadPool();
lastSensorData = new SparseLongArray();
}
public BrightnessConfigurations() {
mConfigurations = new SparseArray<>();
mTimeStamps = new SparseLongArray();
mPackageNames = new SparseArray<>();
}
/**
* 判断对象是否为空
*
* @param obj 对象
* @return {@code true}: 为空<br>{@code false}: 不为空
*/
public static boolean isEmpty(final Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String && obj.toString().length() == 0) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SimpleArrayMap && ((SimpleArrayMap) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
if (obj instanceof LongSparseArray && ((LongSparseArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
if (obj instanceof android.util.LongSparseArray && ((android.util.LongSparseArray) obj).size() == 0) {
return true;
}
}
return false;
}
private HashMap<Class,IteratorFactory> lazyIteratorFactories(){
if(iterators==null){
iterators=new HashMap<>();
IteratorFactory factory= v -> {
int length;
length = length(v);
Method keyAt=v.getClass().getMethod("keyAt",int.class);
Method valueAt=v.getClass().getMethod("valueAt",int.class);
return new MapIterator() {
int i;
@Override
public Object[] nextEntry() throws Throwable{
return new Object[]{keyAt.invoke(v,i),valueAt.invoke(v,i++)};
}
@Override
public boolean hasNext() {
return i<length;
}
};
};
iterators.put(SparseArray.class, factory);
iterators.put(SparseBooleanArray.class, factory);
iterators.put(SparseIntArray.class, factory);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
iterators.put(SparseLongArray.class, factory);
}
iterators.put(JSONObject.class, (IteratorFactory<JSONObject>) v -> {
Iterator<String> iterator=v.keys();
return new MapIterator() {
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Object[] nextEntry() throws Throwable {
String key=iterator.next();
return new Object[]{key,v.get(key)};
}
};
});
}
return iterators;
}
/**
* Return whether object is empty.
*
* @param obj The object.
* @return {@code true}: yes<br>{@code false}: no
*/
public static boolean isEmpty(final Object obj) {
if (obj == null) {
return true;
}
if (obj.getClass().isArray() && Array.getLength(obj) == 0) {
return true;
}
if (obj instanceof CharSequence && obj.toString().length() == 0) {
return true;
}
if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
return true;
}
if (obj instanceof Map && ((Map) obj).isEmpty()) {
return true;
}
if (obj instanceof SimpleArrayMap && ((SimpleArrayMap) obj).isEmpty()) {
return true;
}
if (obj instanceof SparseArray && ((SparseArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseBooleanArray && ((SparseBooleanArray) obj).size() == 0) {
return true;
}
if (obj instanceof SparseIntArray && ((SparseIntArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
if (obj instanceof SparseLongArray && ((SparseLongArray) obj).size() == 0) {
return true;
}
}
if (obj instanceof LongSparseArray && ((LongSparseArray) obj).size() == 0) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
if (obj instanceof android.util.LongSparseArray
&& ((android.util.LongSparseArray) obj).size() == 0) {
return true;
}
}
return false;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public static boolean isEmpty(final SparseLongArray obj) {
return obj == null || obj.size() == 0;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public static boolean isNotEmpty(final SparseLongArray obj) {
return !isEmpty(obj);
}
@Test
public void isEmpty() {
StringBuilder sb = new StringBuilder("");
StringBuilder sb1 = new StringBuilder(" ");
String string = "";
String string1 = " ";
int[][] arr = new int[][]{};
LinkedList<Integer> list = new LinkedList<>();
HashMap<String, Integer> map = new HashMap<>();
SimpleArrayMap<String, Integer> sam = new SimpleArrayMap<>();
SparseArray<String> sa = new SparseArray<>();
SparseBooleanArray sba = new SparseBooleanArray();
SparseIntArray sia = new SparseIntArray();
SparseLongArray sla = new SparseLongArray();
LongSparseArray<String> lsa = new LongSparseArray<>();
android.util.LongSparseArray<String> lsaV4 = new android.util.LongSparseArray<>();
assertTrue(ObjectUtils.isEmpty(sb));
assertFalse(ObjectUtils.isEmpty(sb1));
assertTrue(ObjectUtils.isEmpty(string));
assertFalse(ObjectUtils.isEmpty(string1));
assertTrue(ObjectUtils.isEmpty(arr));
assertTrue(ObjectUtils.isEmpty(list));
assertTrue(ObjectUtils.isEmpty(map));
assertTrue(ObjectUtils.isEmpty(sam));
assertTrue(ObjectUtils.isEmpty(sa));
assertTrue(ObjectUtils.isEmpty(sba));
assertTrue(ObjectUtils.isEmpty(sia));
assertTrue(ObjectUtils.isEmpty(sla));
assertTrue(ObjectUtils.isEmpty(lsa));
assertTrue(ObjectUtils.isEmpty(lsaV4));
assertTrue(!ObjectUtils.isNotEmpty(sb));
assertFalse(!ObjectUtils.isNotEmpty(sb1));
assertTrue(!ObjectUtils.isNotEmpty(string));
assertFalse(!ObjectUtils.isNotEmpty(string1));
assertTrue(!ObjectUtils.isNotEmpty(arr));
assertTrue(!ObjectUtils.isNotEmpty(list));
assertTrue(!ObjectUtils.isNotEmpty(map));
assertTrue(!ObjectUtils.isNotEmpty(sam));
assertTrue(!ObjectUtils.isNotEmpty(sa));
assertTrue(!ObjectUtils.isNotEmpty(sba));
assertTrue(!ObjectUtils.isNotEmpty(sia));
assertTrue(!ObjectUtils.isNotEmpty(sla));
assertTrue(!ObjectUtils.isNotEmpty(lsa));
assertTrue(!ObjectUtils.isNotEmpty(lsaV4));
}
public SparseLongArrayAssert(SparseLongArray actual) {
super(actual, SparseLongArrayAssert.class);
}