官方文檔:https://developer.android.com/reference/android/util/Pair.html
原文地址:
http://blog.csdn.net/qq_24889075/article/details/52152447
http://www.jianshu.com/p/a79ecd711a7c
機緣巧合看見了Pair這個類,網上介紹不多(可能是因爲太簡單了吧) 於是自己看了下源碼。特此記錄
在android.util包中有這麼一個類,他特別像小時候吃的雙棒冰棍(暴露年齡了),他叫Pair
首先看測試代碼
Pair pair = new Pair(1, 2);//第一種創建方式
Log.e("aa", pair.first.toString());
Log.e("aa", pair.second.toString());
Log.e("aa", pair.equals("1") + "");
Log.e("aa", pair.equals(1) + "");
Log.e("aa", "------------------------");
Pair pair2 = Pair.create("1", 2);//第二種創建方式
Log.e("aa", pair2.first.equals("1") + "");
Log.e("aa", pair2.first.equals(1) + "");
Log.e("aa", pair.equals(1) + "");
Log.e("aa", "------------------------");
Log.e("aa", pair.equals(pair2) + "");
Log.e("aa", pair.equals(pair) + "");
打印的Log
Pair 的 first是獲取第一個位置的數據,second是獲取第二個位置的數據。
equals是要重點說一下,看源碼:
//android.util下的源碼
public boolean equals(Object o) {
if (!(o instanceof Pair)) {
return false;
}
Pair<?, ?> p = (Pair<?, ?>) o;
return Objects.equal(p.first, first) && Objects.equal(p.second, second);
}
//這個是android.support.v4.util下的源碼
public boolean equals(Object o) {
if (!(o instanceof Pair)) {
return false;
}
Pair<?, ?> p = (Pair<?, ?>) o;
return objectsEqual(p.first, first) && objectsEqual(p.second, second);
}
private static boolean objectsEqual(Object a, Object b) {
return a == b || (a != null && a.equals(b));
}
根據源碼和上面打印的Log可以看出對比的是Pair對象內容,要注意的是這個equals不是java.lang包下的equals 。
Pair也可以添加泛型,比如:
Pair<Boolean, String> pair;
Pair<Integer, Double> pair2;
Pair<Character, Float> pair3;
是的,不能添加Java的八大類型
挺好玩的一個類,適當使用能省不少事,使用場景自己腦補 (^o^)/。
原文地址:
http://blog.csdn.net/qq_24889075/article/details/52152447
http://www.jianshu.com/p/a79ecd711a7c