Classificar lista vinculada em Java

Rashmi Patidar 12 outubro 2023
Classificar lista vinculada em Java

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]
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artigo relacionado - Java Linked List

Artigo relacionado - Java List