Class FieldsComparator<T>

java.lang.Object
br.com.intersys.systextil.util.FieldsComparator<T>
Type Parameters:
T - o tipo de objeto a comparar
All Implemented Interfaces:
Comparator<T>

public class FieldsComparator<T> extends Object implements Comparator<T>
Comparador que pode ser usado para ordenar coleções de objetos usando os valores de campos desses objetos em ordem ascendente ou descendente.

Por exemplo, se quiséssemos ordenar países por ordem decrescente de população e ordem alfabética do nome, poderíamos obter o seguinte comparador:

 record Pais(String nome, int populacao) {}
 
 Comparator<Pais> ordenador = new FieldsComparator<Pais>()
         .desc(p -> p.populacao())
         .asc(p -> p.nome());
 

Este comparador foi concebido para simplificar a ordenação configurável conforme campos de um objeto qualquer. Nada impede, no entanto, que use qualquer regra aplicável a esse objeto.

  • Field Details

    • sorters

      public final List<FieldsComparator.Sorter<T,? extends Comparable<?>>> sorters
      A lista de ordenadores que este comparador vai usar. Pode ser manipulada diretamente, se houver interesse, mas é mais conveniente usar os outros métodos desta classe.
  • Constructor Details

    • FieldsComparator

      public FieldsComparator()
  • Method Details

    • asc

      public <C extends Comparable<C>> FieldsComparator<T> asc(FieldsComparator.Getter<T,C> field)
      Inclui um ordenador por campo em ordem ascendente.
      Type Parameters:
      C - o tipo do campo usado na comparação
      Parameters:
      field - a função que obtém o valor do campo
      Returns:
      este comparador
    • desc

      public <C extends Comparable<C>> FieldsComparator<T> desc(FieldsComparator.Getter<T,C> field)
      Inclui um ordenador por campo em ordem descendente.
      Type Parameters:
      C - o tipo do campo usado na comparação
      Parameters:
      field - a função que obtém o valor do campo
      Returns:
      este comparador
    • add

      public <C extends Comparable<C>> FieldsComparator<T> add(FieldsComparator.Getter<T,C> field, boolean reverse)
      Inclui um ordenador por campo em ordem ascendente ou descendente.

      Usar isto quando a ordem for parametrizada.

      Type Parameters:
      C - o tipo do campo usado na comparação
      Parameters:
      field - a função que obtém o valor do campo
      reverse - se a ordenação deve ser reversa (descendente)
      Returns:
      este comparador
    • compare

      public int compare(T o1, T o2)
      Specified by:
      compare in interface Comparator<T>