笔记72 | 将姓放在名的后面,排序按姓氏首字母排列的修改笔记

需求

更改之前

更改之后

分析

只看“ A”皇阿玛 “,在我的电话簿中A”是姓,皇阿玛是名,需求是将名显示在前,姓在后,排列顺序要按姓来排列。 之前是直接修改 switch_name_x的返回字符 returnrecord.get(i).getGivenName()+" "+record.get(i).getFamilyName();强制完成姓名调换,后来测试组反馈说排序没有按姓氏排,而是按照名的首字母排,赶紧查阅代码,发现之前电话簿是按照“姓+名”的组合字符的首字母进行排列,想想,那么只要在排列的方法中只对姓式的首字母进行排列即可,于是就修改了以下代码就完成需求!

修改

修改之前的主要代码:

private ArrayList<HashMap<String, String>> mPBList;private List<SortModel> SourceDateList;HashMap<String, String> map = new HashMap<String, String>();                    map.put("item_phonebook_name", getString(R.string.bt_notsupport_download_phonebook));                    map.put("item_phonebook_number", "");                    mPBList.add(map);                SourceDateList= filledData(mPBList);                                Collections.sort(SourceDateList, pinyinComparator);                mAdapter.notifyDataSetChanged();    for (int i = 0; i < record.size(); i++) {                            HashMap<String, String> map = new HashMap<String, String>();                                                    map.put("item_phonebook_name",switch_name_x(record,i));                            map.put("item_phonebook_number", record.get(i).getNumber());                            mPBList.add(map);                        }private List<SortModel> filledData(ArrayList<HashMap<String, String>> phoneList){            List<SortModel> mSortList = new ArrayList<SortModel>();            if(phoneList.size()==0)return mSortList;            for(int i=0; i<phoneList.size(); i++){                SortModel sortModel = new SortModel();                sortModel.setName(phoneList.get(i).get("item_phonebook_name").trim());                sortModel.setPhoneName(phoneList.get(i).get("item_phonebook_number").trim()); String pinyin = characterParser.getSelling(phoneList.get(i).get("item_phonebook_name").trim());                if(pinyin==null||pinyin.length()==0)pinyin="unknow";                String sortString = pinyin.substring(0, 1).toUpperCase();                if(sortString.matches("[A-Z]")){                    sortModel.setSortLetters(sortString.toUpperCase());                }else{                    sortModel.setSortLetters("#");                }                mSortList.add(sortModel);            }            return mSortList;        }        public String switch_name_x(List<PBRecord> record,int i)        {           return record.get(i).getFamilyName() + " " + record.get(i).getGivenName();        }

修改之后的代码(其中只修改了 filledDataswitch_name_x方法):

        private List<SortModel> filledData(ArrayList<HashMap<String, String>> phoneList){            List<SortModel> mSortList = new ArrayList<SortModel>();            if(phoneList.size()==0)return mSortList;            for(int i=0; i<phoneList.size(); i++){                SortModel sortModel = new SortModel();                sortModel.setName(phoneList.get(i).get("item_phonebook_name").trim());                sortModel.setPhoneName(phoneList.get(i).get("item_phonebook_number").trim());                String pinyin = characterParser.getSelling(record_test.get(i).getFamilyName()).trim();                if(pinyin==null||pinyin.length()==0)pinyin="unknow";                String sortString = pinyin.substring(0, 1).toUpperCase();                if(sortString.matches("[A-Z]")){                    sortModel.setSortLetters(sortString.toUpperCase());                }else{                    sortModel.setSortLetters("#");                }                mSortList.add(sortModel);            }            return mSortList;        }                    List<PBRecord> record_test = new ArrayList<PBRecord>();        public String switch_name_x(List<PBRecord> record,int i)        {            record_test = record;            return record.get(i).getGivenName()+" "+ record.get(i).getFamilyName();        }}

原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏皮皮之路

【JDK1.8】JDK1.8集合源码阅读——Set汇总

11730
来自专栏calmound

Set Matrix Zeroes

问题:将数组中的某个值为0的元素所在行和列的其他值都为0 分析;遍历数组找到某一值为0然后遍历他的上下左右直到边界,要用while而不能用搜索,因为搜索过去新节...

34450
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java提高十九】Iterator&fail-fast机制

【Java提高十九】Iterator&fail-fast机制 Iterator详解 迭代对于我们搞Java的来说绝对不陌生。我们常常使用JDK提供的迭代接口进行...

411110
来自专栏java一日一条

关于Java集合的小抄

在尽可能短的篇幅里,将所有集合与并发集合的特征,实现方式,性能捋一遍。适合所有”精通Java”其实还不那么自信的人阅读。

7210
来自专栏WindCoder

Java漫谈-容器

除并发应用,Queue在Java SE5中仅有两个实现 LinkedList和PriorityQueue,差异在于排序行为,而不是性能。

8810
来自专栏Java工程师日常干货

对HashMap的思考及手写实现前言对HashMap的思考通过写一个迷你版的HashMap来深刻理解

HashMap是Java中常用的集合,而且HashMap的一些思想,对于我们平时解决业务上的一些问题,在思路上有帮助,基于此,本篇博客将分析HashMap底层设...

10220
来自专栏一英里广度一英寸深度的学习

二叉树的深度优先遍历与广度优先遍历

先遍历子节点,再遍历兄弟节点。 从根节点开始递归,如果存在子节点,继续遍历子节点。

75030
来自专栏Java进阶架构师

对HashMap的思考及手写实现

HashMap是Java中常用的集合,而且HashMap的一些思想,对于我们平时解决业务上的一些问题,在思路上有帮助,基于此,本篇博客将分析HashMap底层设...

10820
来自专栏Java面试通关手册

这几道Java集合框架面试题在面试中几乎必问

本文会同步更新在我开源的Java学习指南仓库 Java-Guide (一份涵盖大部分Java程序员所需要掌握的核心知识,正在一步一步慢慢完善,期待您的参与)中,...

12020
来自专栏青玉伏案

算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结。数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下。当然数据结构相关博客中我...

21970

扫码关注云+社区

领取腾讯云代金券