官方文档: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

Android学习之Pair类 (android.util.Pair )相关推荐

  1. Android学习笔记07---查看Android虚拟机输出的错误信息与如何部署应用到自己的真实手机

    Android学习笔记07---查看Android虚拟机输出的错误信息

  2. Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题

    Android学习笔记----解决"com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 6553 ...

  3. android 软键盘工具类,Android开发之弹出软键盘工具类简单示例

    本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Co ...

  4. android m权限工具类,android M权限适配,简单工具类

    很简单没什么说的, 因为项目大了,不能轻易引入第三方库,同时确实也没必要为了适配下权限就引入一个库. 这里写了个处理权限的工具类(部分借鉴的,勿喷),不嫌弃的话拿去! 用法: 1.申请权限: Perm ...

  5. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件

    Android中所有控件(也称组件)都继承自adnroid.view.View类,android.view.ViewGroup是View类的重要子类,绝大多书的布局类就继承自ViewGroup类. 参 ...

  6. android语音播放工具类,Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    本文实例讲述了Android开发之MediaPlayer多媒体(音频,视频)播放工具类.分享给大家供大家参考,具体如下: package com.android.imooc.chat; import ...

  7. Android学习笔记:对Android应用进行单元测试

     第一步:在AndroidManifest.xml中加入如下两段代码: [java] view plaincopyprint? <manifest xmlns:android="h ...

  8. Android生命周期工具类,Android倒计时工具类

    多谢touch_ping 的回应.  原来api有这个类  android.os.CountDownTimer , 具体实现很下面的差不多. import android.content.Contex ...

  9. android gps定位工具类,Android原生GPS和网络定位工具类

    在应用开发中我们常常需要网络获取位置的方法,这里做一个工具类的封装,使用的是Android原生定位,包含两种方式,一种是原生GPS一种是网络定位的封装实现: 工具类代码如下所示: package co ...

最新文章

  1. 重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!
  2. 给接口自动化测试框架增色,实现企业微信测试报告
  3. 凭借这份Java面试题集,java上传文件夹
  4. 【FI学习笔记】客户发票收款清账
  5. VTK:场景边界SceneBounds用法实战
  6. FPGA边沿检测Verilog实现(包含上升沿,下降沿,双边沿)
  7. instanceof封装
  8. 你关心才值得分享 | K8S网络安全之访问控制技术实践
  9. php hasmany,浅谈laravel orm 中的一对多关系 hasMany
  10. 简明 Python 教程学习笔记_7_文件操作(os、shutil、pathlib )
  11. linux 视频编辑 ffmpeg,ffmpeg转码视频真的好用!(ffmpeg的简单使用方法)
  12. 【数据结构与算法】实践 构造病种树结构
  13. java代码加载_java类中代码加载顺序
  14. 在java语言中_类间的继承关系是_【填空题】在Java程序里类之间的继承关系只能是________。...
  15. c语言如何写地图,自己用C语言写的扫雷地图
  16. Windows phone应用开发[15]-辅助工具
  17. ssh 远程连接详解--(linux运维09)
  18. 将微信和支付宝支付的个二维码合二为一
  19. vb6.0中的Private Declare Function的含义
  20. 通信教程 | 波特率、比特率、通信速度的区别

热门文章

  1. 关于定量控制污水流量计的安装、维护与定期比对及计量
  2. C# textbox快捷键添加横杠
  3. 2020年戴森设计大奖国际20强揭晓
  4. 上蔡一高2021高考成绩查询,上蔡一高高考录取名单1
  5. 6个免费PPT模板网站,简直不要太好用
  6. 国际会议查询方式和相关会议
  7. ORA-00600: 内部错误代码, 参数: [19004], [], [], [], [], []
  8. 人工学习之预测2023年考研英语答案分布
  9. android mmm 编译指令,mm和mmm编译说明
  10. 怎样用postman做接口测试,一篇足矣