按值排序List <map <string,object >>

时间:2018-10-18 11:38:50

标签: java

我正在尝试从请求到Oracle数据库对List<Map<String, Object>>进行排序。我收到的格式是

63: "Preasignación"
401: "Categorización de posiciones RPV"
509: "Genérica"
532: "Baja de conservación de número"
537: "Pooles ADSL RIMA"
660: "Activación"
886: "CENTREX"
905: "Conservación de número"
920: "Suspensión y rehabilitación"
955: "STB, AABB, PBX e ISPBX"

如您所见,它们是按数字排序的,但是我想按“字母顺序”的值对其进行排序。我该怎么做?请尽量不要用西班牙语代码吓::)这是继承的代码。这是我的代码。

public ArrayList<String> ObtenerIdsTiposOrdenPorPerfilLdap(String perfiles) {

    String query = "";
    ArrayList<String> tipos = new ArrayList<String>();
    try {
        query = " SELECT ID_PARAMETRO FROM PARAMETRO WHERE EXISTS( " +
                    " SELECT DISTINCT(ID_TIPO_ORDEN) FROM REL_PERF_LDAP_PERF_TP_ORD_SIS " +
                    " WHERE ID_PERFIL_LDAP IN (" + perfiles + ") " +
                    " AND ID_TIPO_ORDEN = -1) " +
                    " AND ID_TIPO_PARAMETRO = " + Parametro.ID_TIPO_PARAMETRO_TIPO_ORDEN +
                    " UNION " +
                    " SELECT ID_PARAMETRO FROM PARAMETRO WHERE ID_PARAMETRO IN ( " +
                    " SELECT DISTINCT(ID_TIPO_ORDEN) FROM REL_PERF_LDAP_PERF_TP_ORD_SIS " +
                    " WHERE ID_PERFIL_LDAP IN (" + perfiles + ")) " +
                    " AND ID_TIPO_PARAMETRO = " + Parametro.ID_TIPO_PARAMETRO_TIPO_ORDEN +
                    " ORDER BY ID_PARAMETRO ";
        List<Map<String, Object>> result = jdbcTemplate.queryForList(query);
        for (Map<String, Object> map : result) {
            tipos.add(String.valueOf(map.get("ID_PARAMETRO")));  
        }
    } catch (Exception e) {
        log.error(e.getMessage());
    } finally {
        query = null;
    }
    return tipos;
}

1 个答案:

答案 0 :(得分:1)

如果PARAMETRO(“preasignación”,...)的文字描述实际上在PARAMETRO本身中(我们将其称为TXT_PARAMETRO列),就足以问到数据库执行订购:删除

" ORDER BY ID_PARAMETRO ";

并添加

" ORDER BY TXT_PARAMETRO ";

相反。