HOWTO · Java

Classificar lista vinculada em Java

Este artigo apresenta como classificar a lista vinculada em Java.

Nesta página

Uma lista vinculada em Java é uma estrutura de dados ou uma coleção que permite aos usuários criar um array dinâmico na memória. A lista não contém nenhum tamanho predefinido. Ele cria nós dinamicamente e armazena valor e referência ao próximo nó em um único endereço de memória. Os elementos da lista mantêm os valores na ordem sequencial ou a lista mantém a ordem de inserção na qual os elementos são inseridos.

A classificação é definida como o método de organizar os elementos em uma estrutura de dados em uma ordem definida. A disposição pode ser em ordem crescente ou decrescente, dependendo da necessidade. Observe que pode haver várias abordagens para classificar a coleção de listas.

Abaixo está o bloco de código para classificar os elementos na matriz.

import java.text.Collator;
import java.util.Comparator;
import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<String>();
    list.add("ab");
    list.add("bb");
    list.add("aA");
    list.add("bB");
    System.out.println(list);
    list.sort(new Comparator<String>() {
      @Override
      public int compare(String s1, String s2) {
        return Collator.getInstance().compare(s1, s2);
      }
    });
    System.out.println(list);
  }
}

No bloco de código acima, uma lista é instanciada usando a palavra-chave new. A palavra-chave instancia a lista vinculada de tipos de dados String e chama o construtor internamente. Em seguida, a instância da lista chama o método add para preencher os elementos da lista. O valor é impresso para verificar o pedido de inserção.

O método sort está presente na interface List. A função classifica a lista com base em algum comparador fornecido como parâmetro. O comparador é usado para comparar a lista de elementos transmitidos.

O ponto que você deve considerar é classificar os valores passados ​​e garantir que eles sejam do mesmo tipo. Se os valores não forem do mesmo tipo ou quando os elementos não forem comparáveis, a classe lança ClassCastException.

A implementação interna da classificação é feita usando o comando merge sort que é eficiente o suficiente e faz a comparação no tempo log n. Assim, uma instância de novo Comparator é formada e substitui o método compare. A implementação é uma forma tradicional de substituir o método e fornecer a implementação.

Em vez disso, uma implementação de uma linha usando as funções lambda do Java 8 pode ser usada. A interface é uma Interface Funcional e possui um único método para chamar. O lambda leva diretamente o número de parâmetros presentes na interface. A representação Java 8 de uma linha do código acima é mostrada abaixo.

list.sort((o1, o2) -> Collator.getInstance().compare(o1, o2));

A instrução real para comparar os elementos na lista é a classe collator. Esta classe é de natureza abstrata e define os protótipos dos métodos. A implementação está presente na classe abstrata que os estende.

A classe collator compara a string sensível ao local. O método getInstance obtém a instância com o valor Locale padrão atual. A função compare compara os valores com base no Collator e retorna +1, -1 ou 0, com base nos valores que são maiores a, menores que ou iguais.

A saída do código acima é mostrada abaixo. A segunda linha representa a saída de forma organizada. De acordo com a sequência ASCII dos caracteres no teclado, as letras maiúsculas estão na faixa superior (A-Z) do que os alfabetos pequenos (a-z). Assim, a lista resultante na segunda linha imprime primeiro o minúsculo bb e depois imprime bB visto que tem letras maiúsculas.

[ab, bb, aA, bB][aA, ab, bb, bB]