[Scala]集合中List元素轉Tuple元素的函數迭代寫法


____

本文鏈接:

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: 本文為原創-未經允許不可商用-轉載請注明來源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM