解决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);
上一篇 下一篇

猜你喜欢

热点阅读