Ответ 1
Когда Closure
, используемый sort
, имеет два параметра, он действует как традиционный Comparator
. То есть для каждого сравнения, которое выполняется во время сортировки, между двумя элементами a
и b
, оно возвращает отрицательное целое число, ноль или положительное целое число, поскольку первый аргумент меньше, равен или больше, чем второй.
В вашем конкретном сценарии сравнение является результатом использования оператора космического корабля <=>
. Другими словами, вы эффективно сортируете свои элементы в порядке возрастания.
Например, если у вас есть список [ 3, 2, 1 ]
, результат использования этого сортировки будет [ 1, 2, 3 ]
.
Таким образом, m.sort{a,b -> a.value <=> b.value}
примерно эквивалентно использованию следующей функции compare
:
int compare(a, b) {
if (a < b) {
return -1;
} else if (a > b) {
return 1;
} else {
return 0;
}
}