Нахождение минимума и максимума данного массива в Scala - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть массив, как показано ниже.то, что я пытаюсь понять, это минимальная и максимальная встроенные функции.

val bf=Array("wheels","on","the","bus")

Для Макса вывод - «колеса», что правильно, потому что количество элементов для колес велико по сравнению с другими Но когда я пытаюсьbf.min.Я получаю вывод как «шина».Если min дает элемент с минимальным количеством элементов, то он должен быть включен?я прав?что мне здесь не хватает?Может кто-нибудь, пожалуйста, помогите мне понять, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Буквенно-цифровой порядок используется по умолчанию при сравнении строк.

Вы хотите использовать minBy, maxBy, если вы хотите получить самую короткую или самую длинную строку соответственно.

bf.minBy(_.length)

Массив # maxBy

0 голосов
/ 03 февраля 2019
Функция

min использует метод Java String compareTo для сравнения значения Unicode каждого символа в строках.

Если мы сравним on и bus, то bus будет меньше:

@ "on".compareTo("bus")
res16: Int = 13

13 - это разница целых значений o и b,Кроме того, возвращаемое значение является положительным, что означает, что левый операнд больше правого операнда.

и on меньше, чем wheels и так далее:

@ "on".compareTo("wheels")
res17: Int = -8

Здесь мы имеем отрицательное возвращаемое значение, что означает, что левый операнд меньше правого операнда.

Подробнее смотрите здесь: https://www.journaldev.com/18009/java-string-compare

...