Android Pair记录

本文详细介绍了Android中Pair类的功能和使用方法,包括如何创建Pair对象、比较Pair对象以及结合ArrayList和HashMap的应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pair

Pair位于android.util包,根据字面意思一对也可以判断出该对象可以存放一对值,的确被猜中了,其有first和second两个成员。

使用

该类使用比较简单,测试代码如下

Pair pair = new Pair(1, 2);
Pair pair2 = Pair.create("1", 2);
Pair pair3 = new Pair(1, 2);
Log.i(TAG, pair.first.toString()); // 1
Log.i(TAG, pair.second.toString()); // 2
Log.i(TAG, pair2.first.equals("1") + ""); // true
Log.i(TAG, pair2.first.equals(1) + ""); // false
Log.i(TAG, pair.equals(pair2) + ""); // false
Log.i(TAG, pair.equals(pair) + ""); // true
Log.i(TAG, pair.equals(pair3) + ""); // true

源码

public class Pair<F, S> {
    //两成成员
    public final F first;
    public final S second;
    //构造方法赋值
    public Pair(F first, S second) {
        this.first = first;
        this.second = second;
    }
    //通过equals来比较两个Pair的相应位置的值,都为true则返回true
    @Override
    public boolean equals(Object o) {
        if (!(o instanceof Pair)) {
            return false;
        }
        Pair<?, ?> p = (Pair<?, ?>) o;
        return Objects.equals(p.first, first) && Objects.equals(p.second, second);
    }
    
    @Override
    public String toString() {
        return "Pair{" + String.valueOf(first) + " " + String.valueOf(second) + "}";
    }
    
    //create实际还是通过构造方法直接对first和second成员进行赋值
    public static <A, B> Pair <A, B> create(A a, B b) {
        return new Pair<A, B>(a, b);
    }
}

V4下的Pair

使用和上述Pair完全相同,其中equals方法虽然实现不是通过Object下的equals方法实现,但实现逻辑与其完全相同

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

使用ArrayList的有序功能和HashMap的键值对功能时,可以采取ArrayList和Pair搭配使用

Map<Integer,Object> map=new HashMap<>();
List<Object> list=new ArrayList<>();
//配合使用
List<Pair<Integer,String>> sortList = new ArrayList<Pair<Integer, String>>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值