对一串用":"和";"拼接的汉字字符串排序
程序员文章站
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:有赞;
上一篇: 一些Python中的二维数组的操作方法