____
本文鏈接:
https://www.cnblogs.com/senwren/p/Scala-Lis-2-Tuple.html
——
Scala沒有提供相應寫法,
但迭代寫法仍然可以做到。
有兩種寫法
1:
object Xxx extends App{ val res = List(List("a", 2), List("c", 3) ) .map{_ match {case List(w,c)=> w->c } } println(res) }
2:
object Xxx extends App{ val res = List(List("a", 2), List("c", 3) ) .collect{case l:List[Any]=> l(0)->l(1) } } println(res) }
方法1會在外層集合中有不符合結構要求的List存在時報錯。
方法2則是只會把元素List的前兩個留下。
具體根據實際情況,可有相應的靈活變化的寫法來應對。
如轉換前集合元素不是List而是Array,
或者集合中的集合元素的元素的個數不是兩個而是三個的時候。
方法2不會報錯,但會丟數據,方法1反之。
根據需求選擇:
如果明確原始元素只需要留下前幾個(我還沒研究后幾個要咋寫),知道外層集合內的集合元素內的元素個數不固定且無所謂丟不丟,就用方法2;
如果明確,外層集合內的集合元素內的元素個數必須是固定的,如果不是這樣需要得到一個提醒,那就用方法1,因為不符合結構的外層集合中的集合元素若存在,就會報錯,coder便會得到編譯器的提醒,從而能夠及時查找輸入數據(即方法1中.map()之前形成的數據對象)的問題。
__________
Copyright: 本文為原創-未經允許不可商用-轉載請注明來源