1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

TreeMap desordenado em outro servidor

Fala galera...

Seguinte, tenho um map ordenado por valor da seguinte forma.

// CLASS Comparator
public class MapValueComparator implements Comparator<String> {

    Map<String, String> base;

    public MapValueComparator(Map<String, String> base) {
        this.base = base;
    }

    public int compare(String a, String b) {
        return base.get(a).compareTo(base.get(b));
    }
}

//Metodo que retorna a lista ordenada pelo valor
public Map getEquipamentosByCliente(String idCliente, boolean allOption) 

    List<Equipamento> list = new ArrayList<Equipamento>();
    Map<String, String> map = new TreeMap<String, String>();
    TreeMap<String, String> mapOrdenado = null;
    MapValueComparator comparator = new MapValueComparator(map);

    try {
        ...
        ...
        ...

        list = facade.getEquipamentos();

        if (!list.isEmpty()) {

            //Adiciona uma posição vazia para adicionar a opção TODOS após a ordenação
            if ((list.size() > 1) && allOption) {
                map.put("", "");
            }

            for (int i = 0; i< list.size(); i++){
                Equipamento equip = (Equipamento)list.get(i);
                String nomeEquipamento = equip.getAlias();

                map.put(String.valueOf(equip.getIdEquipamento().intValue()), nomeEquipamento);
            }

            mapOrdenado = new TreeMap<String, String>(comparator);
            mapOrdenado.putAll(map);
        }
    } catch (Exception e) {
        ...
        ...
    }


    if ((list.size() > 1) && allOption) {
        mapOrdenado.put("", Messages.getString("ajax.combo.todos"));
    }

    list = null;
    return mapOrdenado;
}

Isso me retorna uma lista mais ou menos assim:

{=Todos, 67180=10.10.10.1000 - 564 - Servidor de Aplicação, 67260=100.200.300.00 - TESTE_EQUIP - teste_equip, 67242=127.0.0.1 - TESTE PBO - TESTE}

Reparem que de fato a lista está ordenada pelo valor.

No JSP a lista é montada através de um

<html:select property="${propertyIDEquipamento}" styleId="filtroEquipamento">
    <c:if test="${not empty propertyListaEquipamento}">
        <html:optionsCollection name="${propertyListaEquipamento}" value="key" label="value"/>
    </c:if>
</html:select>

Rodando local em minha máquina a listagem é apresentada corretamente. Com a ordenação passada para o jsp, testando em outros dois servidores a ordenação é mantida, porém, é uma máquina a ordenação não é mantida, apresentando a listagem mais ou menos assim:

{67260=100.200.300.00 - TESTE_EQUIP - teste_equip, 67242=127.0.0.1 - TESTE PBO - TESTE, 67180=10.10.10.1000 - 564 - Servidor de Aplicação, =Todos}

Ou seja, uma bagunça.

Versão do java e tomcat em todas as máquinas:

java -version
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Server VM (build 17.0-b16, mixed mode)

apache-tomcat-6.0.18

SOs testados:

LISTA ORDENADA
Red Hat Enterprise Linux Server release 5.6 (Tikanga)

LISTA ORDENADA
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)

LISTA ORDENADA
Windows 7

LISTA BAGUNÇADA
Red Hat Enterprise Linux Server release 5.10 (Tikanga)

Alguém tem uma luz? Já teve o mesmo problema? Alguma alternativa na implementação?

Valeus!!!

  • Testei com Firefox e Chrome e o resultado é o mesmo.

    crpablo   03 de jul de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java collections ou faça a sua própria pergunta.