public static void main(String[] args) {
List<Map<String, Object>> mapList = new ArrayList<Map<String,Object>>();
Map<String, Object> m1 = new HashMap<String,Object>();
m1.put("name", "AC");
Map<String, Object> m2 = new HashMap<String,Object>();
m2.put("name", "AB");
Map<String, Object> m3 = new HashMap<String,Object>();
m3.put("name", "中国");
Map<String, Object> m4 = new HashMap<String,Object>();
m4.put("name", "广东");
Map<String, Object> m5 = new HashMap<String,Object>();
m5.put("name", "B东");
Map<String, Object> m6 = new HashMap<String,Object>();
m6.put("name", "C东");
mapList.add(m1);
mapList.add(m2);
mapList.add(m3);
mapList.add(m4);
mapList.add(m5);
mapList.add(m6);
if(CollectionUtils.isNotEmpty(mapList)){
Collections.sort(mapList, new Comparator<Map<String,Object>>() {
@Override
public int compare(Map<String,Object> m1, Map<String,Object> m2) {
String o1 = (String) m1.get("name");
String o2 = (String) m2.get("name");
char c1 = ((String) o1).charAt(0);
char c2 = ((String) o2).charAt(0);
return concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c1)).compareTo(
concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(c2)));
}
});
} for (Map<String, Object> map : mapList) {
System.out.println("map:"+(String)map.get("name"));
}
} private static String concatPinyinStringArray(String[] pinyinArray) {
StringBuffer pinyinSbf = new StringBuffer();
if ((pinyinArray != null) && (pinyinArray.length > 0)) {
for (int i = 0; i < pinyinArray.length; i++) {
pinyinSbf.append(pinyinArray[i]);
}
}
return pinyinSbf.toString();
}

List集合String字符串按照汉语拼音排序的更多相关文章

  1. 集合或数组转成String字符串

    1.将集合转成String字符串 String s=""; for (int i = 0; i < numList.size(); i++) { if (s=="& ...

  2. 新疆大学OJ(ACM) 1047: string 字符串排序

    1047: string 时间限制: 1 Sec  内存限制: 128 MB 题目描述 有n个字符串字符串n<=50000,把所有字符串串起来,得到一个字典序最小的字符串. 输入 输入第一行是一 ...

  3. Map 集合 和 String 字符串相互转换工具类

    package com.skynet.rimp.common.utils.util; import java.util.Arrays; import java.util.HashMap; import ...

  4. 判断集合中存在String字符串 或 判断集合中不存在String字符串

    一.使用场景 用于集合中有多个相近的字符,无法使用包含判断 如: 这里如果我想判断以上集合中是否包含"信封件-DE"就会被"信封件-DE2"影响到 毕竟:&qu ...

  5. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  6. 程序兵法:Java String 源码的排序算法(一)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 这是泥瓦匠的第103篇原创 <程序兵法:Java Str ...

  7. [CareerCup] 1.3 Permutation String 字符串的排列

    1.3 Given two strings, write a method to decide if one is a permutation of the other. 这道题给定我们两个字符串,让 ...

  8. 对list集合中的对象进行排序(转载)

    原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元 ...

  9. Java Map集合按照key和value排序之法

    一.理论基点 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black-Tre ...

随机推荐

  1. PHP 之根据两个经纬度计算距离

    一.函数代码 /** * @param $lng1 * @param $lat1 * @param $lng2 * @param $lat2 * @return float */ function g ...

  2. 刷题记录:[DDCTF 2019]homebrew event loop

    目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

  3. 刷题记录:[0CTF 2016]piapiapia

    目录 刷题记录:[0CTF 2016]piapiapia 一.涉及知识点 1.数组绕过正则及相关 2.改变序列化字符串长度导致反序列化漏洞 二.解题方法 刷题记录:[0CTF 2016]piapiap ...

  4. 20189220 余超《Linux内核原理与分析》第七周作业

    分析Linux内核创建一个新进程的过程 基础知识概括 操作系统内核实现操作系统的三大管理功能,即进程管理功能,内存管理和文件系统.对应的三个抽象的概念是进程,虚拟内存和文件.其中,操作系统最核心的功能 ...

  5. vue+elementui搭建后台管理界面(6登录和菜单权限控制[二])

    根据权限计算路由的代码 /** * 通过meta.role判断是否与当前用户权限匹配 * @param roles * @param route */ function hasRoles (roles ...

  6. RedHat离线安装Python3以及各种依赖

    RedHat离线安装Python3以及各种依赖 1, yum install -y ncurses-libs zlib-devel mysql-devel bzip2-devel openssl-de ...

  7. mysql增删改查sql语句

    未经允许,禁止转载!!!未经允许,禁止转载!!! 创建表   create table 表名删除表    drop table 表名修改表名   rename table 旧表名 to 新表名字创建数 ...

  8. H5 FormData对象的使用——进行Ajax请求并上传文件

    XMLHttpRequest Level2 添加了一个新的接口——FormData .[ 主要用于发送表单数据,但也可以独立使用于传输键控数据.与普通的Ajax相比,它能异步上传二进制文件 ] 利用F ...

  9. Linux中root用户找不到JAVA_HOME

    Linux中root用户找不到JAVA_HOME   在Ubuntu环境中安装好Java环境后设置环境变量:在/etc/profile中设置好了JAVA_HOME变量并引入到PATH中,用于Ubunt ...

  10. 025_Excel知识汇总

    一.Excel相对引用和绝对应用的区别 加上了绝对地址符“$”的列标和行号为绝对地址,在公式向旁边复制时不会发生变化,没有加上绝对地址符号的列标和行号为相对地址,在公式向旁边复制时会跟着发生变化. 具 ...