springboot devuelve datos ordenados agrupados por la primera letra

La representación final que se debe lograr es la siguiente:

1. Idea de implementación

1. Ordene la lista de datos Colecciones, ordenadas según caracteres chinos.

2. Circule para encontrar 26 letras, use la letra como clave y use los datos con la misma letra inicial en la lista como valor (conjunto).

2. Preparación para el desarrollo

1. Aquí debe utilizar el paquete jar de pinyin4j-2.5.0.jar, que convierte caracteres chinos a pinyin.

Puede hacer clic   en pinyin4j-2.5.0.jar   para descargar el recurso del paquete jar que cargué en CSDN;

2. Importe el paquete jar al proyecto maven

1) Cree un nuevo archivo lib en el proyecto, copie y pegue el paquete jar en el archivo

2) Configuración de dependencia en el archivo pom

        <dependency>
            <groupId>pinyin4j</groupId>
            <artifactId>pinyin4j</artifactId>
            <version>2.5.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}\lib\pinyin4j-2.5.0.jar</systemPath>
        </dependency>

3. Implementación del código

1. Este es el método para convertir caracteres chinos a pinyin.

/**
 * 字符串拼音转换工具类
 */
public class PinyinUtil {

    /**
          * 获取汉字串拼音,英文字符不变
          * @param chinese 汉字串
          * @return 汉语拼音
          */
    public static String getFullSpell(String chinese) {
        StringBuffer pybf = new StringBuffer();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {
                try {
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        return pybf.toString();
    }

}

2. Ejemplos de uso de código comercial

Lo que finalmente devuelvo aquí es el modelo de datos con la clase de entidad como tema, pero la herramienta de procesamiento pinyin solo puede procesar cadenas, así que transformé esta parte y la implementé con expresiones lambda.

public List<a> findParkList(String search){
		List<a> b = new ArrayList<>();
		//查询所有园区
		List<d> list = dMapper.findByCommName(search);
		//将园区按照首字母进行分组
		if (list != null && list.size() > 0) {
			Comparator com = Collator.getInstance(Locale.CHINA);
			//按字母排序
			Collections.sort(list.stream().map(d::getCommunityName).collect(Collectors.toList()),com);
			//输出26个字母
			for (int i = 1; i <= 26; i++) {
				String word = String.valueOf((char)(96 + i)).toUpperCase();
				//循环找出首字母一样的数据
				List<d> dList = new ArrayList<>();
				for (d e : list) {
					String zm = PinyinUtil.getFullSpell(e.getCommunityName()).substring(0,1);
					if (word.equals(zm)){
						dList.add(e);
					}
				}
				if (dList != null && dList.size() > 0) {
					a c = new a();
					c.setInitials(word);
					c.setFrameParkList(dList);
					b.add(c);
				}
			}
		}
		return b;
	}

o referirse a

Debido a que este código involucra código comercial, se ha modificado parte del código.

4. Prueba

Llame a la interfaz, la salida de la consola es la siguiente

{
  "content": [
    {
      "frameParkList": [
        {
          "communityName": "安大法官的双方各",
          "createName": "",
          "datasourceId": "",
          "id": "220A2878E078rfvcd1EE899A1E3"
        }
      ],
      "initials": "A"
    },
    {
      "frameParkList": [
        {
          "communityName": "白风风光光",
          "createName": "",
          "datasourceId": "",
          "id": "220A2878E0C14F1EE877A1E3"
        }
      ],
      "initials": "B"
    }
],
  "message": "",
  "status": "success"
}

#@su#

帮助到您请点赞关注收藏谢谢!!

Supongo que te gusta

Origin blog.csdn.net/qq_18432653/article/details/116783071
Recomendado
Clasificación