Package br.com.intersys.systextil.util
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>
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.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceFieldsComparator.Getter<T,C extends Comparable<C>> Define como obter um campo do objeto para usar na comparação.static classFieldsComparator.Sorter<T,C extends Comparable<C>> Define como a ordenação deve ser feita com determinado campo do objeto. -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal List<FieldsComparator.Sorter<T, ? extends Comparable<?>>> A lista de ordenadores que este comparador vai usar. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<C extends Comparable<C>>
FieldsComparator<T> add(FieldsComparator.Getter<T, C> field, boolean reverse) Inclui um ordenador por campo em ordem ascendente ou descendente.<C extends Comparable<C>>
FieldsComparator<T> asc(FieldsComparator.Getter<T, C> field) Inclui um ordenador por campo em ordem ascendente.int<C extends Comparable<C>>
FieldsComparator<T> desc(FieldsComparator.Getter<T, C> field) Inclui um ordenador por campo em ordem descendente.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Comparator
equals, reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
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
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
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 camporeverse- se a ordenação deve ser reversa (descendente)- Returns:
- este comparador
-
compare
- Specified by:
comparein interfaceComparator<T>
-