介绍

Pair 的字面意思是“一对”、“一双”,瞄一眼它的源码,果不其然,里面只有两个字段 firstsecond .

public class Pair {    public final F first;    public final S second;    public Pair(F first, S second) {        this.first = first;        this.second = second;    }    @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);    }    // ...    public static  Pair  create(A a, B b) {        return new Pair(a, b);    }}

用法

它的使用也是非常简单的:

// 两种方式都可以创建 Pair 实例,而第二种方式内部实际上也是使用第一种方式创建Pair pair1 = new Pair(1, "111"); // 第一种方式创建Pair pair2 = Pair.create(1, 111); // 第二种方式创建Pair pair3 = Pair.create(1, 111);Log.e(TAG, pair1.first.toString()); // 1Log.e(TAG, pair1.second.toString()); // 111Log.e(TAG, pair1.second.equals("111") + ""); // trueLog.e(TAG, pair1.second.equals(111) + ""); // falseLog.e(TAG, pair1.equals(pair2) + ""); // falseLog.e(TAG, pair2.equals(pair3) + ""); // true

从以上示例可知:

  • Pair 的 first 获取的是第一个位置的数据,second 获取的是第二个位置的数据;
  • Pair 的 equals 比较的是 first 与 second 值是否同时 equals .

说到 equals , 上面的源码只是 android.util 包下 Pair 类的 equals 方法,由于 android.support.v4.util 包下也有 Pair 类,通过比较,两个包下的 Pair 类只有 equals 方法有所不同,其它方法无异。

// android.util 包下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);}// android.support.v4.util 包下public boolean equals(Object o) {    if (!(o instanceof Pair)) {        return false;    } else {        Pair<?, ?> p = (Pair)o;        return ObjectsCompat.equals(p.first, this.first) && ObjectsCompat.equals(p.second, this.second);    }}

ObjectsCompat 类里面的 equals 方法:

public static boolean equals(@Nullable Object a, @Nullable Object b) {    if (VERSION.SDK_INT >= 19) {        return Objects.equals(a, b);    } else {        return a == b || a != null && a.equals(b);    }}

Objects 是 Java7 以后才有的类,而 Android 是从 4.4 开始支持 JDK7 编译的,因此为了兼容 4.4 之前的版本,在 v4 中加入了一个不依赖 JDK7 的 Pair 类。

使用场景

既要以键值对的方式存储数据列表,同时在输出时保持顺序的情况下,我们可以使用 Pair 搭配 ArrayList 实现。

场景一:

假如我们需要生成 n 个按钮,而每个按钮都有 code 值、展示文本内容的 content 值,当我们点击其中一个按钮后就根据 code 值去做指定的事情(如网络请求)。

ArrayList> dataList = new ArrayList();

场景二:

记录推送过来的消息,我们可以用 Pair 的 first 记录消息到达的时间戳,second 记录消息体。

ArrayList> dataList = new ArrayList();

更多相关文章

  1. Android(安卓)标题栏上加一个返回按钮 超简单的返回
  2. 【Android笔记】Android统计文件夹大小,删除文件夹下的所有文件方
  3. Activity缺少无参默认构造方法,产生实例化错误InstantiationExcep
  4. Android(安卓)Frament中add,repalce,hide,show用法
  5. Android开发常见异常和解决方案(二)
  6. 关于android WebViewClient的方法解释
  7. Android(安卓)滚动事件 OnScrollListener
  8. Android(安卓)HorizontalScrollView嵌套CustomView
  9. Android(安卓)自定义View onDraw方法详解

随机推荐

  1. Android入门教程 (二) 第一个App HelloWorl
  2. 分享17个老罗Android开发视频教程(免费下
  3. android实现应用程序的开机自启动
  4. 简单明了的分析Android触摸事件,看完再也
  5. HTML---Android与js交互实例
  6. Android(安卓)Animation学习笔记
  7. Android(安卓)基础知识、Android(安卓)进
  8. Android—— 4.2 Vold挂载管理_mmcblk内
  9. Cocos2d-x3.1下 Android,APK自动升级
  10. 前端h5与 android/ios 交互传参