解决list按拼音排序的问题
2019-10-15 本文已影响0人
不知不怪
1 使用工具
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
2 重写compareTo方法
package com.battcn.config;
import net.sourceforge.pinyin4j.PinyinHelper;
public class User implements Comparable<User> {
// Collections.sort(list); // 按年龄排序
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int compareTo(User o) {
return concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(o.getName().charAt(0)))
.compareTo(concatPinyinStringArray(PinyinHelper.toHanyuPinyinStringArray(this.getName().charAt(0))));
}
private 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();
}
}
3 调用
List<User>list=new ArrayList<>();
......
......
Collections.sort(list);