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 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.
LinkedInArtigo relacionado - Java Linked List
- Imprimir lista vinculada em Java
- Matriz de lista vinculada em Java
- Lista duplamente vinculada em Java