Min Max функции для списка строк возвращается на каком основании - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь исследовать kotlin, но когда я наткнулся на список строк, как показано ниже.

  • Я пробовал использовать функции min и max.
  • И я изначально думал, что это даст ошибку времени компиляции, но я этого не понял.
  • И когда я печатаю min, я получаю a555585887996669 как вывод, который является самым длинным словом в массиве.
val list = listOf<String>("a555585887996669","abtfcr6cr","abcde","abcd")
   println(list.min()) //a555585887996669
  • Мне нужно знать, на каком основании он возвращает это значение
  • , почему min и max поддерживаются списком строк

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Функции расширения min() и max() работают на всем, что можно сравнить. Это включает в себя числовые типы c, но также и все, что реализует интерфейс Comparable, который является стандартным способом для объектов реализовать естественное упорядочение.

В этом случае String реализует Comparable; он использует лексикографический c порядок (что примерно соответствует порядку слов в словаре), сравнивая символы попарно до тех пор, пока не найдет разницу, или пока не закончится одна строка. Так, например, "a" <"ab c" <"b". </p>

Порядок сбора в Kotlin объясняется здесь .

0 голосов
/ 08 апреля 2020

Посмотрите на этот документ: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/min.html

Поскольку String реализует сравнимое значение, min вернет наименьшее значение на основе альфа-цифры c сортировка.

Для оценки. массив по длине строки:

list.minBy { it -> it.length };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...