Ordenar uma lista em Java

Lovey Arora 12 outubro 2023
  1. Use o método Collections.sort() para classificar uma lista em Java
  2. Use o método Collections.reverseorder() para classificar uma lista em Java
  3. Use o método Stream.sorted() para classificar uma lista em Java
  4. Use o método Comparator.naturalOrder() para classificar um ArrayList em Java
Ordenar uma lista em Java

Uma lista é uma coleção ordenada e pode armazenar itens em qualquer ordem. Podemos aplicar algoritmos tradicionais a uma lista.

Este tutorial demonstrará como classificar uma lista em Java usando diferentes funções.

Use o método Collections.sort() para classificar uma lista em Java

Podemos usar a função sort() da classe Collections para ordenar uma lista. Podemos pegar o objeto de lista e ele modifica a ordem dos elementos. Ele classifica a lista em ordem crescente.

Por exemplo,

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist);
    System.out.println("After Sorting: " + slist);
  }
}

Produção:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

Podemos ver que a lista original é modificada e classificada na ordem apropriada no código acima.

Observe que deve haver os mesmos tipos de elementos na lista; caso contrário, ele lançará CLassCastException.

Use o método Collections.reverseorder() para classificar uma lista em Java

Usamos o método Collections.reverseorder() para classificar o ArrayList em ordem decrescente. Não usamos esse método diretamente. Primeiro, o método Collections.sort() é usado para classificar em ordem crescente e, em seguida, o método Collections.reverseorder() é usado para classificar em ordem decrescente.

Veja o código abaixo.

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    Collections.sort(slist, Collections.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

Produção:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

Criamos uma lista no código acima e a classificamos usando o método Collections.sort(). Em seguida, é classificado em ordem decrescente usando o método Collections.reverseorder().

Use o método Stream.sorted() para classificar uma lista em Java

A função sorted() é definida na interface Stream presente no pacote java.util. Usando esse método, a lista é classificada em ordem crescente. Se os elementos na lista não forem do mesmo tipo, ela lançará java.lang.ClassCastEcxeption.

Aqui, usaremos a função stream() para gerenciar a coleção de elementos na lista, collect() irá receber e armazenar os elementos, e a função tolist() irá retornar a lista final na lista pedido.

Por exemplo,

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    List<Integer> sortedList = slist.stream().sorted().collect(Collectors.toList());
    System.out.println("After Sorting: " + sortedList);
  }
}

Produção:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

Observe que uma nova lista é criada no exemplo acima.

Use o método Comparator.naturalOrder() para classificar um ArrayList em Java

A interface Comparator em Java pode ordenar os objetos de classes criadas pelo usuário com base no membro de dados desejado. Podemos usá-lo para classificar listas também.

A função naturalOrder() classificará os elementos em ordem crescente.

Veja o código fornecido abaixo.

import java.util.*;
import java.util.stream.*;

public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.naturalOrder());
    System.out.println("After Sorting: " + slist);
  }
}

Produção:

After Sorting: [1, 2, 4, 5, 6, 8, 9]

Os elementos nulos são classificados no topo usando este método. Quando se trata de alfabetos, as palavras que começam com letras maiúsculas são classificadas primeiro, em seguida, as palavras que começam com letras minúsculas são classificadas em ordem crescente.

Podemos usar a função reverseOrder() conforme discutido anteriormente para classificar em ordem decrescente.

Por exemplo,

import java.util.*;
import java.util.stream.*;
public class Main {
  public static void main(String[] args) {
    List<Integer> slist = Arrays.asList(4, 5, 1, 2, 8, 9, 6);
    slist.sort(Comparator.reverseOrder());
    System.out.println("After Sorting: " + slist);
  }
}

Produção:

After Sorting: [9, 8, 6, 5, 4, 2, 1]

Artigo relacionado - Java List