由于判断手机号是否相等是非常困难的,因为本地可能存在多个相同联系人名字,云端也是.

所以比较两个list字符串是否相等,这样效率极大的提高.

//是否存在手机号
private boolean isPhoneDifference(List localContactListBeanList, List savedBeans) {

    for (ContactListBean contactListBeanLocal : localContactListBeanList) {String localContactName = contactListBeanLocal.getContactsName();for (ContactListBean contactListSavedBean : savedBeans) {String savedName = contactListSavedBean.getContactsName();if (localContactName.equals(savedName)) {List<PhoneListBean> savedPhoneListBeanList = contactListSavedBean.getPhoneList();List<PhoneListBean> localPhoneListBeans = contactListBeanLocal.getPhoneList();List<String> phoneSaved = new ArrayList<>();List<String> phoneLocal = new ArrayList<>();for (PhoneListBean phoneInfoCloud : savedPhoneListBeanList) {phoneSaved.add(phoneInfoCloud.getNumber());}for (PhoneListBean phoneInfoLocal : localPhoneListBeans) {phoneLocal.add(phoneInfoLocal.getNumber());}boolean isEquals = equalsList(phoneSaved, phoneLocal);if (isEquals) {break;}if (!isEquals) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {EvtLog.e(TAG, "phoneSaved" + String.join(",", phoneSaved));EvtLog.e(TAG, "phoneLocal" + String.join(",", phoneLocal));}EvtLog.e(TAG, "开启自动备份通讯录2222");return true;}}}}return false;
}public boolean equalsList(List<String> list1, List<String> list2) {// null情况if ((list1 == null && list2 != null)|| (list1 != null && list2 == null)) {return false;}if (list1.size() != list2.size()) {return false;}String[] arr1 = list1.toArray(new String[]{});String[] arr2 = list2.toArray(new String[]{});Arrays.sort(arr1);Arrays.sort(arr1);return Arrays.equals(arr1, arr2);
}private boolean isExistThePhone(List<PhoneListBean> localPhoneListBeans, List<PhoneListBean> savedPhoneListBeanList) {for (PhoneListBean savedPhoneListBean : savedPhoneListBeanList) {String savedPhoneNum = savedPhoneListBean.getNumber();if (savedPhoneNum != null) {savedPhoneNum = savedPhoneNum.replaceAll(" ", "");EvtLog.e(TAG, "savedPhoneNum==" + savedPhoneNum);for (PhoneListBean localPhoneListBean : localPhoneListBeans) {String localPhoneNum = localPhoneListBean.getNumber();if (localPhoneNum != null) {localPhoneNum = localPhoneNum.replaceAll(" ", "");EvtLog.e(TAG, "localPhoneNum==" + localPhoneNum);if (savedPhoneNum.equals(localPhoneNum)) {return true;}}}}}return false;}private boolean isNameDifference(List<ContactListBean> localContactListBeanList,List<ContactListBean> savedBeans) {for (ContactListBean localContactListBean : localContactListBeanList) {if (!isExitTheName(savedBeans, localContactListBean)) {return true;}}return false;
}private boolean isExitTheName(List<ContactListBean> savedBeans, ContactListBean localContactListBean) {String localContactName = localContactListBean.getContactsName();if (localContactName != null) {localContactName = localContactName.replaceAll(" ", "");EvtLog.e(TAG, "contactName==" + localContactName);for (ContactListBean contactListSavedBean : savedBeans) {String savedName = contactListSavedBean.getContactsName();if (savedName != null) {savedName = savedName.replaceAll(" ", "");EvtLog.e(TAG, "savedName==" + savedName);if (localContactName.equals(savedName)) {return true;}}}}return false;
}

判断本地和云端通讯录是否一致相关推荐

  1. 一种本地和云端相结合的语音识别系统及方法与流程

    本发明涉及语音识别领域,特别是涉及到一种本地和云端相结合的语音识别系统及方法. 背景技术: 目前语音识别作为一种常用的人机交互技术,已广泛应用于各类电子产品中,以其自然方便的交互方式收到了消费者的喜爱 ...

  2. DevOps和容器:本地or云端,如何选择?

    在本地,还是去云端?这一辩论由来已久,尤其是在云计算兴起时,那时人们一直在反复思考是该将工作负载保留在本地数据中心还是迁移到云主机上. 但是,Docker带来的技术革命把这场辩论引入了一个新的层面.随 ...

  3. shell脚本:判断本地和远程文件是否存在

    判断本地文件是否存在 #! bin/sh file=$1 if [ -f "$file" ]; thenecho $file elseecho "no such file ...

  4. 【JY】LS-DYNA求解效率深度测评│六种规模,本地VS云端5种不同硬件配置

    LS-DYNA是一个以显式求解为主,隐式求解为辅的通用非线性动力有限元分析程序,核心是求解器. 用户主要是高校/科研机构和航空航天.汽车.电子/高科技.船舶.土木工程.制造和生物工程等行业,包括汽车碰 ...

  5. html 判断本地文件存在,javascript怎么判断文件是否存在?

    javascript怎么判断文件是否存在?下面本篇文章就来给大家介绍一下利用javascript判断文件是否存在的方法,希望对大家有所帮助. 在JavaScript中,可以通过ActiveXObjec ...

  6. Obsidian 从本地到云端

    原文: https://www.ftls.xyz/posts/obcsapi-fc-simple/ 作者:恐咖兵糖 Obsidian 从本地到云端 Obsidian 作为本地笔记软件,在使用了多端同步 ...

  7. 如何判断本地(路由器)分配的IP是否公网IP?

    原文:http://www.nat123.com/Pages_25_558.jsp 因为在家没有公网ip,所以我用的花生壳内网穿透. 如何判断本地(路由器)分配的IP是否公网IP? 公网IP:全球唯一 ...

  8. Windows判断本地是否安装mysql以及mysql安装过程

    目录 1.判断本地是否安装mysql 2 安装Mysql 3 配置环境变量 4 修改mysql数据库存放地址 1.判断本地是否安装mysql 在运行界面输入services.msc弹出服务界面,在里面 ...

  9. iOS开发-------Sqlite3实现本地存储简易通讯录

    最近几天整了下Sqlite3,也就是iOS的另外一种储存方式,那么coreData是有什么不足么,不是,一般数据比较简易的时候是不会用coreData的,反而会用自身的sqlte3来实现本地的存储,这 ...

最新文章

  1. java soap envelope_如何在SOAP请求中关闭Envelope和Body
  2. BZOJ 1664: [Usaco2006 Open]County Fair Events 参加节日庆祝( dp )
  3. win10死机频繁怎么解决
  4. fastadmin 后台管理 时间戳字段使用
  5. 四因素三水平正交试验表_正交实验设计过程
  6. hdu 4609 3-idiots——FFT
  7. 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞
  8. 汇编语言程序设计基础知识
  9. 《别闹了,费曼先生》听书笔记
  10. 非平衡电桥电阻计算_详解用非平衡电桥如何测量电阻
  11. 我的2016——我和嵌入式的那些事
  12. 对于von Mises distribution(冯·米塞斯分布)的一点心得
  13. ofs.open函数
  14. 饥荒食物 + 物品全制造代码
  15. Android Studio使用技巧系列教程(四)
  16. (二十):网络表情包的单模态与双模态情感分析
  17. 30岁开始学编程,学什么语言比较好?
  18. 黑魂复刻游戏的碰撞摩擦问题——Unity随手记(2021.4.27)
  19. 马哥python培训机构怎么样
  20. 在EDIUS中使用调音台的方法

热门文章

  1. scp复制linux系统的文件文件到本机(windows)以及本机文件复制到远程的命令
  2. python汉语读音_【学习】python 汉语转拼音
  3. 2018.1之后Standard Assets如何安装?
  4. dev控件调用html页面,Chrome开发工具 扩展 DevTools
  5. (二)预处理时间序列数据用于AI预测和异常检测
  6. 开始使用ASP.NET核心运行状况检查
  7. excel文件修复工具_win10上使用SFC工具修复损坏的系统文件,安全高效,维修电脑必会...
  8. exif.js html图片旋转,exif.js 实现图片旋转到正常
  9. java两个web项目之间如何传值,两个项目之间传递参数有关问题 - 大神进
  10. 插入公式_word2016编写文档 插入公式选项为暗,不能操作