Проверка, равен ли данный элемент во всех кортежах, содержащихся в коллекции - PullRequest
3 голосов
/ 20 июня 2019

Имея коллекцию кортежей, я хотел бы проверить, равен ли данный элемент во всех кортежах.

Например, учитывая, что второй элемент всех кортежей в этом массиве должен вернуть false:

val a = Array((4,2), (8,1), (9,4), (10,2), (13,1))

При рассмотрении второго элемента из всех кортежей в этом массиве должно возвращаться true:

val b = Array((4,3), (8,3), (9,3), (10,3), (13,3))

Ответы [ 2 ]

6 голосов
/ 20 июня 2019

Если я правильно понял ваш вопрос, вы можете сделать это так:

val a = Array((4,2), (8,1), (9,4), (10,2), (13,1))
val b = Array((4,3), (8,3), (9,3), (10,3), (13,3))

a.map(_._2).toSet.size == 1 // false
b.map(_._2).toSet.size == 1 // true

Вы можете поиграть с ним здесь

3 голосов
/ 20 июня 2019

Попробуйте

a.forall { case (key, value) => value == a.head._2 } // res2: Boolean = false
b.forall { case (key, value) => value == b.head._2 } // res3: Boolean = true

Обратите внимание, в случае пустого массива Array.empty[(Int, Int)] это решение возвращает true.

Вдохновленный https://stackoverflow.com/a/41478838/5205022

...