Android(安卓)实现中文按拼音排序方法
16lz
2021-01-25
难点:汉字转为拼音。
https://github.com/promeG/TinyPinyin
是首先获取的Bean对象:
for (int i = 0; i < dataList.size(); i++) {//将汉字转化为拼音,并以“,”隔开 如:北京市 -> BEI,JIN,SHIString s = Pinyin.toPinyin(dataList.get(i).platformName, ",");String[] strarr = s.split(",");//取首字母for (int m = 0; m < strarr.length; m++) {strarr[m] = strarr[m].substring(0, 1);}StringBuffer sb = new StringBuffer();for (int n = 0; n < strarr.length; n++) {sb.append(strarr[n]);}//s2=BJSString s2 = sb.toString();Log.e(TAG, "vgetPlatformListByLetter: s2=" + s2);//bean的成员变量赋值dataList.get(i).namePinYin = s2;}/** * 进行冒泡排序 *list 根据bean的成员变量namePinYin 排序 * @param list */ public void transferList(List list) { for (int i = 0; i < list.size() - 1; i++) { for (int j = 0; j < list.size() - 1 - i; j++) { exchangeNameOrder(j, list); } } } /** * 交换两个名字的顺序,根据首字母判断 * * @param j * @param list */ public void exchangeNameOrder(int j, List list) { String namePinYin1 = list.get(j).namePinYin; String namePinYin2 = list.get(j + 1).namePinYin; int size = namePinYin1.length() >= namePinYin2.length() ? namePinYin2.length() : namePinYin1.length(); for (int i = 0; i < size; i++) { if (!list.get(j).belongLetter.equals(list.get(j + 1).belongLetter)) { break; } char jc = namePinYin1.charAt(i); char jcNext = namePinYin2.charAt(i); if (jc < jcNext) {//A在B之前就不用比较了 break; } if (jc > jcNext) {//A在B之后就直接交换,让A在前面B在后面 IndexModel nameBean = list.get(j); list.set(j, list.get(j + 1)); list.set(j + 1, nameBean); break; } //如果AB一样就继续比较后面的字母 } }
//大数向后移动,每趟排序确定这一趟的最大值,就像冒泡一样。public void sort_maopao(int arr[]){ for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j arr[i+1]) { int temp=arr[i+1]; arr[i+1]=arr[i]; arr[i+1]=temp; } } }}
更多相关文章
- android开发时 使用android layout editor 打开xml时eclipse自动
- 搭建环境变量时遇到的三个错误
- Android(安卓)内存泄漏检测
- Mac Android(安卓)Studio快捷键整理
- Android动态设置主题样式
- 在Android4.0 SDK的tools目录中运行模拟器emulator的环境变量的
- Android---配置adb环境变量
- android ndk 给结构体赋值的方法
- Android(安卓)下的 makefile 组织结构