我有一个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的新手还有另一种方法来转换这个以及当前的方式有什么问题吗?
答案 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)}