按照姓氏首字母进行排序

package com.dchealth.common.util;

import com.dchealth.common.utils.StringUtils;
import com.dchealth.medical.domain.vo.PatientVo;

import java.text.Collator;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;

public class SortPersonUtil {
    public static  void sortByName(List personList) {
        Collator chineseCollator = Collator.getInstance(Locale.CHINA);
        Collator englishCollator = Collator.getInstance(Locale.US);
        Collections.sort(personList, new Comparator() {
            @Override
            public int compare(T person1, T person2) {
                if (person1 instanceof PatientVo && person2 instanceof PatientVo) {
                    if (StringUtils.isEmpty(((PatientVo) person1).getPatientName())) {
                        return -1;
                    }
                    if (StringUtils.isEmpty(((PatientVo) person2).getPatientName())) {
                        return -1;
                    }

                    char firstChar1 = ((PatientVo) person1).getPatientName().charAt(0);
                    char firstChar2 = ((PatientVo) person2).getPatientName().charAt(0);
                    boolean isChinese1 = Character.UnicodeScript.of(firstChar1) == Character.UnicodeScript.HAN;//判断是否为中文
                    boolean isChinese2 = Character.UnicodeScript.of(firstChar2) == Character.UnicodeScript.HAN;//判断是否为中文
                    if (isChinese1 && isChinese2) {
                        return chineseCollator.compare(((PatientVo) person1).getPatientName(), ((PatientVo) person2).getPatientName()); // 中文姓名按拼音首字母排序
                    } else if (!isChinese1 && !isChinese2) {
                        return englishCollator.compare(((PatientVo) person1).getPatientName(), ((PatientVo) person2).getPatientName()); // 英文姓名按首字母排序
                    } else if (isChinese1) {
                        return 1; // 中文姓名排在英文姓名之前
                    } else {
                        return -1; // 英文姓名排在中文姓名之后
                    }
                }
                return 0;
            }
        });


    }

}

你可能感兴趣的:(java开发,#,java基础概念,java)