简体   繁体   English

无法将List [Any]转换为List [(String,String)]

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM