美文网首页
排序实例

排序实例

作者: twilight_mao | 来源:发表于2018-11-09 09:23 被阅读0次

描述

访问者排序规则:部门、成员依次排序;部门、成员各自按名称首字符排序:特殊字符,数字,字母,汉字(转为拼音)排序;字母、汉字按a-z排序;

代码

  //排序
        Collections.sort(accessors, new Comparator<Map>() {         
            @Override
            public int compare(Map o1, Map o2) {
//type值表示部门(1)或成员(0)
                int type1 = (int) o1.get("type");
                int type2 = (int) o2.get("type");
                if (type1 != type2) {
                    return -type1 + type2;
                }
//取出首字符,根据正则表达式分出特殊字符、数字、字母、汉字并排序
                String name1 = (String) o1.get("name");
                String name2 = (String) o2.get("name");
                char c1 = name1.charAt(0);
                char c2 = name2.charAt(0);
                int t1 = getCharType(c1);
                int t2 = getCharType(c2);
                if (t1 != t2) {
                    return t1 - t2;
                }
//字符是中文,需要转成拼音
                if (t1 == 3) {
                    c1 = Pinyin4jUtil.getPinYinHeadChar(c1 + "").charAt(0);
                    c2 = Pinyin4jUtil.getPinYinHeadChar(c2 + "").charAt(0);
                }
                return c1 - c2;
            }
        });
        return Result.setSuccess(accessors, Constant.HTTPCODE_200, false);
    }
//判断字符类型
    private int getCharType(char c) {
        String cc = c + "";
        if (cc.matches("[0-9]?")) {
            return 1;
        }
        if (cc.matches("[a-zA-Z]?")) {
            return 2;
        }
        if (cc.matches("[\\u4e00-\\u9fa5]+")) {
            return 3;
        }
        return 0;
    }
//首字符转拼音
public static String getPinYinHeadChar(String str) {

        String convert = "";
        for (int j = 0; j < str.length(); j++) {
            char word = str.charAt(j);
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
            if (pinyinArray != null) {
                convert += pinyinArray[0].charAt(0);
            } else {
                convert += word;
            }
        }
        return convert;
    }

相关文章

  • 排序实例

    描述 访问者排序规则:部门、成员依次排序;部门、成员各自按名称首字符排序:特殊字符,数字,字母,汉字(转为拼音)排...

  • Java 数组

    Java 实例 - 数组排序及元素查找 以下实例演示了如何使用sort()方法对Java数组进行排序,及如何使用 ...

  • shell-sort命令

    通过sort对输出进行排序。 语法 实例 对排序结果进行去重

  • 算法之交换排序-思想剖析-by: 西瓜

    交换排序的类型分为2种,冒泡排序以及快速排序。后期楼主会把所有排序全部更新完毕。一:冒泡排序现实例子:冒泡思想:编...

  • Java学习——day 12

    主要内容 分拣存储及其实例 冒泡排序 引用数据类型的排序 笔记详情 1. 分拣存储及其实例 Map容器能够实现键值...

  • Java实例-数组

    1、Java 实例 – 数组排序及元素查找:使用sort()方法对Java数组进行排序,使用 binarySear...

  • STL容器之set/multiset

    构造函数 赋值操作 大小操作 插入 删除 实例 查找 实例 更改set容器排序规则 自定义数据 寻找上下限 实例 ...

  • JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)

    本文实例总结了JS数组排序技巧。分享给大家供大家参考,具体如下: 1、冒泡排序 结果如下: 2、sort排序 效果...

  • pandas实例-总结

    继续前面的练习,之前的文章参考: pandas实例-了解你的数据-Chipotle pandas实例-筛选与排序-...

  • pandas实例-Visualization-Titanic_D

    继续前面的练习,之前的文章参考: pandas实例-了解你的数据-Chipotle pandas实例-筛选与排序-...

网友评论

      本文标题:排序实例

      本文链接:https://www.haomeiwen.com/subject/vlsixqtx.html