• 对一串用":"和";"拼接的汉字字符串排序


    近日在项目中遇到一个需求,要求显示的下拉菜单select选项的汉字字符进行排序,项目是前后端分离Ajax交互的,前端页面初始化时请求后端拿到菜单数据。项目中的所有菜单数据均是后端提供的。

    场景是后端请求数据库拿到了菜单的数据,是一段字符串:例如

    "1:阿里巴巴;2:京东;3:有赞;4:蚂蚁金服;5:网易;6:顺丰科技;7:蘑菇街;8:唯品会;9:拼多多;10:同花顺;"
    实现按照各个公司的名称进行排序,要求"数字:公司"的对应不能改变,返回一个完整的字符串,这意味着排序后要重新拼接。

    可以借助集合框架Map和List来完成功能:

    • 输入字符串
    • 将字符串以";"分割成字符串数组
    • 公司名称与对应的值存入map
    • 公司名称存入list
    • 对list进行排序
    • 根据排序后的list去map里查找映射进行字符拼接
    • 返回字符串
    public static void main(String[] args) {
      String str = "1:阿里巴巴;2:京东;3:有赞;4:蚂蚁金服;5:网易;6:顺丰科技;7:蘑菇街;8:唯品会;9:拼多多;10:同花顺;";
        System.out.println(Sort(str));
    }     
    static String Sort(String string){
        String [] options = string.split(";");
        StringBuffer strSort = new StringBuffer();
        Map<String, String> sort = new HashMap<>();
        List<String> list = new ArrayList<>();
        //把快递公司名称与对应的值存入map
        for(String x:options){
            String[] arr = x.split(":");
            sort.put(arr[1], arr[0]);//"公司名称":"value"
            list.add(arr[1]); //“公司名称”
        }
        //使用集合框架Collections提供的sort方法,传入list和comparator
        Collections.sort(list, Collator.getInstance(Locale.CHINA));
        for(String str:list){
            strSort.append(sort.get(str)+":"+str+";");
        }
        return strSort.toString();
    }
    

    输出:1:阿里巴巴;2:京东;4:蚂蚁金服;7:蘑菇街;9:拼多多;6:顺丰科技;10:同花顺;5:网易;8:唯品会;3:有赞;

  • 相关阅读:
    JD20 紧急疏散
    排序-归并
    排序:快排
    剑指offer-二叉树镜像
    美的笔试--分糖果
    centos限定端口访问
    javascript中使用ajax异步验证数据库后方法return true时总是返回undefined
    javascript自定义startWith()和endWith()方法
    jsp <input type="file"> 清空value值的一种方式
    Could not initialize class sun.awt.X11GraphicsEnvironment
  • 原文地址:https://www.cnblogs.com/keeya/p/9211089.html
Copyright © 2020-2023  润新知