requestparam query parameter name multiple getmapping example sorting kotlin

sorting - query - Kotlin clasificando nulos al final



spring boot url parameter (2)

Puede usar estas funciones del paquete kotlin.comparisons :

Esto le permitirá hacer un comparador que compare SomeObject por SomeObject poniendo null s en último lugar. Entonces simplemente puede pasar el comparador a
fun <T> Iterable<T>.sortedWith(comparator: Comparator<in T>): List<T> , que clasifica un iterable en una lista usando un comparador:

val l = listOf(SomeObject(null), SomeObject("a")) l.sortedWith(compareBy(nullsLast<String>()) { it.nullableField })) // [SomeObject(nullableField=a), SomeObject(nullableField=null)]

¿Cuál sería una forma Kotlin de ordenar la lista de objetos por campo nulo con nulos en último lugar?

Kotlin objeto de ordenar:

@JsonInclude(NON_NULL) data class SomeObject( val nullableField: String? )

Análogo al código de Java a continuación:

@Test public void name() { List<SomeObject> sorted = Stream.of(new SomeObject("bbb"), new SomeObject(null), new SomeObject("aaa")) .sorted(Comparator.comparing(SomeObject::getNullableField, Comparator.nullsLast(Comparator.naturalOrder()))) .collect(toList()); assertEquals("aaa", sorted.get(0).getNullableField()); assertNull(sorted.get(2).getNullableField()); } @Getter @AllArgsConstructor private static class SomeObject { private String nullableField; }


Puedes usar compareBy y pasar nullsLast como comparador así:

val elements = listOf(SomeObject("bbb"), SomeObject(null), SomeObject("aaa")) val sorted = elements.sortedWith(compareBy<SomeObject,String?>(nullsLast(), { it.name })) println(sorted) //-> [SomeObject(name=aaa), SomeObject(name=bbb), SomeObject(name=null)]