1
resposta

[Sugestão] Uma sugestão no código final do projeto

Em vez de usar: .sorted(Comparator.comparing(Dados::codigo))

utilizar: .sorted(Comparator.comparing(marca -> Integer.parseInt(marca.codigo())))

Os dados chegam como Strings e ao serem ordenados com sorted ficam desorganizados. A proposta é converter o valor do código, que apesar de ser um número, é inicialmente uma String, para Integer. Isso permite ordená-los de forma sequencial.

Trecho do código:

var marcas = conversor.obterLista(json, Dados.class);
    marcas.stream()
            //.sorted(Comparator.comparing(Dados::codigo))
            .sorted(Comparator.comparing(marca -> Integer.parseInt(marca.codigo())))
            .forEach(System.out::println);
1 resposta

Olá Leandro, tudo bem?

Sua sugestão faz bastante sentido, especialmente quando os dados são representados como Strings e precisam ser ordenados numericamente. A conversão para Integer antes de ordenar garante que a ordenação siga a sequência numérica correta, em vez da ordem lexicográfica das Strings.

O trecho de código que você sugeriu:

.sorted(Comparator.comparing(marca -> Integer.parseInt(marca.codigo())))

É uma boa abordagem para resolver o problema de ordenação. No entanto, é importante garantir que todos os valores de codigo possam ser convertidos para Integer sem causar exceções. Caso contrário, pode ser interessante adicionar um tratamento de exceção para lidar com possíveis erros de conversão.

Aqui está um exemplo de como você pode fazer isso:

var marcas = conversor.obterLista(json, Dados.class);
marcas.stream()
    .sorted(Comparator.comparing(marca -> {
        try {
            return Integer.parseInt(marca.codigo());
        } catch (NumberFormatException e) {
            // Trate o erro conforme necessário, por exemplo, retornando um valor padrão
            return Integer.MAX_VALUE;
        }
    }))
    .forEach(System.out::println);

Neste exemplo, caso ocorra um NumberFormatException, o código retorna um valor padrão (Integer.MAX_VALUE), mas você pode ajustar conforme a necessidade do seu projeto.

Bons estudos!