今天由于工作需要,需要对Map中的key值进行排序,原来代码中用的是HashMap,由于HashMap构造器不能接收Comparator参数,所以改用TreeMap,对Treemap<String,String>的key值的汉字进行拼音排序,就用到了pinyin4j的包,如代码
Map<String, List<Camera>> ownerCamerasMap = new TreeMap<String, List<Camera>>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == null || o2 == null || o1.equals("") || o2.equals("") || o1.equals(o2))return 0;
//实际需要,要将key值为 '本地摄像头' 放在第一位,'常用摄像头'放在第二位
if(o1.equals("本地摄像头"))return -1;
if(o2.equals("本地摄像头"))return 1;
if(o1.equals("常用摄像头") && !o2.equals("本地摄像头"))return -1;
if(o2.equals("常用摄像头") && !o1.equals("本地摄像头"))return 1;
//以汉字少的为基准
for(int i = 0; i < Math.min(o1.length(), o2.length()); i+