欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-01 09:09:03
近日在项目中遇到一个需求,要求显示的下拉菜单select选项的汉字字符进行排序,项目是前后端分离Ajax交互的,前端页面初始化时请求后端拿到菜单数据。项目中的所有菜单数据均是后端提供的。 场景是后端请求数据库拿到了菜单的数据,是一段字符串:例如 : "1:阿里巴巴;2:京东;3:有赞;4:蚂蚁金服; ......

近日在项目中遇到一个需求,要求显示的下拉菜单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:有赞;