解讀Pair類 (android.util.Pair )

官方文檔:https://developer.android.com/reference/android/util/Pair.html
原文地址:
http://blog.csdn.net/qq_24889075/article/details/52152447
http://www.itdecent.cn/p/a79ecd711a7c

機(jī)緣巧合看見了Pair這個(gè)類,網(wǎng)上介紹不多(可能是因?yàn)樘?jiǎn)單了吧) 于是自己看了下源碼。特此記錄

在android.util包中有這么一個(gè)類,他特別像小時(shí)候吃的雙棒冰棍(暴露年齡了),他叫Pair

雙棒冰棍

首先看測(cè)試代碼

Pair pair = new Pair(1, 2);//第一種創(chuàng)建方式 
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);//第二種創(chuàng)建方式 
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

Log

Pair 的 first是獲取第一個(gè)位置的數(shù)據(jù),second是獲取第二個(gè)位置的數(shù)據(jù)。
equals是要重點(diǎn)說一下,看源碼:


//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);
    }

//這個(gè)是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));
    }

根據(jù)源碼和上面打印的Log可以看出對(duì)比的是Pair對(duì)象內(nèi)容,要注意的是這個(gè)equals不是java.lang包下的equals 。
Pair也可以添加泛型,比如:

Pair<Boolean, String> pair;
Pair<Integer, Double> pair2;
Pair<Character, Float> pair3;

是的,不能添加Java的八大類型


挺好玩的一個(gè)類,適當(dāng)使用能省不少事,使用場(chǎng)景自己腦補(bǔ) (o)/。

原文地址:
http://blog.csdn.net/qq_24889075/article/details/52152447
http://www.itdecent.cn/p/a79ecd711a7c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容