[英]Cannot Convert List[Any] to List[(String,String)]
I have a Scala List 我有一个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)))
I try converting it to List[(String,String)] by using 我尝试通过使用将其转换为List [(String,String)]
frequent_items_list.map(_.asInstanceOf[Array[(String, String)]])
However when I try that I get a ClassCastException 但是,当我尝试得到ClassCastException时
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lscala.Tuple2;
I am new to Scala is there another way to convert this and what is wrong with the current way? 我是Scala的新手,还有另一种方法可以转换此格式,当前方法有什么问题?
This will get you a List[(String, String)]
result even if the tuple elements are not strings (they can even be a mix of types), but it will drop any List
element that is not an Array()
and it will drop any Array
elements that aren't 2-tuples. 即使元组元素不是字符串(它们甚至可以是类型的混合),这也会为您提供List[(String, String)]
结果,但是它将删除任何不是Array()
List
元素,并且删除所有不是2元组的Array
元素。
freq_items_list.flatMap{case a:Array[_]=> a.toList; case _ => List()}
.collect{case (x,y) => (x.toString, y.toString)}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.