无法将列表[任何]转换为列表[(字符串,字符串)]

时间:2017-09-22 08:25:43

标签: scala

我有一个Scala列表

freq_items_list
List[Any] = List(Array((fid,1007)), Array((tes,d0920)), Array((tn,r3026), (fd,1007)), Array((tn,g5260_p2)), Array((testN
ame,g5260_p2), (fd,1007)), Array((tn,c7835)), Array((tn,g5250_p2)), Array((tn,g5250_p2), (fd,1007)), Array((tn,r7090)),
Array((tn,r7090), (fd,1007)))

我尝试使用

将其转换为List [(String,String)]
frequent_items_list.map(_.asInstanceOf[Array[(String, String)]])

然而,当我尝试时,我得到一个ClassCastException

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lscala.Tuple2;

我是Scala的新手还有另一种方法来转换这个以及当前的方式有什么问题吗?

1 个答案:

答案 0 :(得分:0)

即使元组元素不是字符串(它们甚至可以是混合类型),这也会得到List[(String, String)]结果,但它会删除任何不是{List元素的Array()元素1}}它将删除任何不是2元组的Array元素。

freq_items_list.flatMap{case a:Array[_]=> a.toList; case _ => List()}
               .collect{case (x,y) => (x.toString, y.toString)}