Как использовать метод groupBy в списке Int, & Strings - PullRequest
0 голосов
/ 23 января 2020

Мне удалось сгруппировать список строк по длине:

List("Every", "student", "likes", "Scala").groupBy((element: String) => element.length)

Я хочу сгруппировать кортеж (т.е.),

("Every", "student", "likes", "Scala", 1, 5, 54, 0, 1, 0)

1 Ответ

1 голос
/ 23 января 2020

Метод groupBy принимает функцию предиката в качестве параметра и использует ее для группировки элементов по ключу и значениям в коллекцию Map.

Согласно документации Scala, определение метода groupBy выглядит следующим образом:

groupBy[K](f: (A) ⇒ K): immutable.Map[K, Repr]

Следовательно, предполагая, что у вас есть кортеж Int и String и вы хотите сгруппировать строки, я бы выполнил следующие шаги

1. Create a list from tuple
2. Filter out types other than String
3. Apply groupBy on the list

Код для этого следующим образом: -

("Every", "student", "likes", "Scala", 1, 5, 54, 0, 1, 0)
  .productIterator.toList
  .filter(_.isInstanceOf[String])
  .map(_.asInstanceOf[String])
  .groupBy((element: String) => element.length)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...