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]