RESOLVIDO - Reordenação de Array

Estou tentando reordenar um array.
exemplo:

Tenho 10 registros na base, cada um possui um numero de importancia, 1,2,3,4…!

As vezes posso ter grupos de importancia, por exeplo: 1,2,3,3,3,4,5,6,7,7,8,9,9,10.

Mas posso mudar transfomando a importancia 2 em 5.

ficando 1,2,2,2,3,4,5,6,7,7,8,9,9,10.

Quando faço isso ele deveria reordenar, mas não estou conseguindo alguem teria uma ideia de como fazer?

1 curtida

Essa parece uma ordem numérica simples, o que ela tem de diferente que não possa ser resolvido com um sort normal (ex: Collections.sort)?

O que é um grupo de importância e como ele afeta a ordenação?

Se você tem um conjunto de números e quer que eles sejam ordenados após a alteração deles, precisa chamar a ordenação assim que conclui a alteração. O que tem tentado fazer?

Abraço.

Sim, parece mais apos algumas tentativas vi que não é.

Gupo de importacia seria o atribunto que incida a ordenção," Não é o ID".

Por exemplo tenho 10 registros de id’s diferentes que eu não levo em consideração e tem a importancia de cada registro o que ira me informar qual deve ser apresentado primeiro.

No caso da ordenação eu passo o campo de importacia mas ele inclui o registro no mesmo grupo.

por exemplo:

registros : 1,2,3,3,4,5,5 quero alterar um registro do grpu de importancia 5 para 2.
alteração: 1,2,3,4,4,5,6 = este deveria ser o resultado ( Lembrando esse numero 2 era o numero 5 da primeira lista, e o antigo numero 2 virou 3 assim sucessivamente. ), mas usando o sort tenho esse resultado:

List importacia = retorno da base;

importacia.stream()
.sorted((p1, p2) -> p1.getSequencyNbr().compareTo(p2.getSequencyNbr()))
.forEach(p -> System.out.println(p.getCampoimportancia()));

1,2,2,3,3,4,5.

Faltou a parte em que você altera a importância. Suponho que ela esteja entre a linha List importacia = retorno da base; e a importacia.stream(), certo? Pois, sem ver o que é feito nessa alteração, é difícil ver se a ordenação está correta ou não.

Se a alteração é feita diretamente no banco, é preciso garantir que os resultados carregados no retorno da base estão devidamente alterados.

Abraço.

Não.

Neste caso é um update simples, pega-se o Id, set o valor da importacia modificado na tela e salva no banco.

Para solucionar este problema.

Criei um laço while.

Que a cada interação verificava se o Valor da importancia era igual ao valor da interação.

A cada interação faço uma chamada a base passando o valor da interação, retorno é setado em uma lista e passada para interar dentro de um foreach.

Quando trazia resultado eu incrementava no valor da importancia, quando não, seguia o laço.

Resultando no objetivo alcançado:
registros : 1,2,3,3,4,5,5 alterei um registro do grupo de importancia 5 para 2.
resultado: 1,2,3,4,4,5,6 = OK.