0
Можно ли преобразовать вектор гетерогенных векторов к списку Tuple3 в ScalaПреобразовать вектор в кортеже Скала
т.е.
Vector(Vector(1,"a","b"),Vector(2,"b","c")) to List(Tuple3(1,"a","b"),Tuple3(2,"b","c"))
Можно ли преобразовать вектор гетерогенных векторов к списку Tuple3 в ScalaПреобразовать вектор в кортеже Скала
т.е.
Vector(Vector(1,"a","b"),Vector(2,"b","c")) to List(Tuple3(1,"a","b"),Tuple3(2,"b","c"))
Явное конвертировать каждый внутренний Vector
в Tuple3
:
vector.map {
case Vector(f, s, t) => Tuple3(f, s, t)
}.toList
Если имеется векторов вариационного размера, вы можете использовать более общий подход:
def toTuple(seq: Seq[_]): Product = {
val clz = Class.forName("scala.Tuple" + seq.size)
clz.getConstructors()(0).newInstance(seq.map(_.asInstanceOf[AnyRef]): _*).asInstanceOf[Product]
}
vector.map(toTuple).toList
Но есть ограничение: максимальная длина векторов 22.
Можно явно отобразить его как драйвер базы данных возвращает вектор векторов VARIADIC размера т.е. зависит от типа запроса, выполняемого ... если его выберите a, b из таблицы, его вектор размером 2, представляющий 2 выбранных столбца и т. д. ... Есть ли способ сопоставления без учета размера – user2780187
Как вы ожидаете сделать 'Tuple3', если вектор длины не 3? –
Вопрос @ChrisMartin был о 'Tuple3'. Я согласен с вами в том, что векторы вариационного размера нуждаются в более общем решении. –