Scala中的flatMap()方法

Scala中的flatMap()方法是一种与map()Scala中的方法相似的方法。

flatMap()方法被用于一个收集变换到根据传递的转换函数的值等。flatMap()服务的主要功能是删除集合元素的内部分组,并将其转换为退化元素的集合。

flatMap()方法是简单地的总和map()flattern() 。将使用map()方法,然后使用flattern()方法来转换集合。

语法:

collection.flatMap(convFunc)

参数:

  • convFunc-这是一个转换函数,用于转换集合中的元素。

返回值:

该函数返回与初始函数相同类型的新集合。

例子:

示例1:flatMap()在字符串序列上使用并进行拼合

// Program to illustrate the working of 
// flatMap() function

object MyObject {
    def main(args: Array[String]) {
        val coll1 = List("Scala", "Programming", "Language") 
        print("Initial collection: " + coll1)
        
        val coll2 = coll1.flatMap(_.toLowerCase) 
        print("\nMapped collection with function to multiply by 2: " + coll2)
    }
}

输出:

Initial collection: List(Scala, Programming, Language)Mapped collection with function to multiply by 2: 
List(s, c, a, l, a, p, r, o, g, r, a, m, m, i, n, g, l, a, n, g, u, a, g, e)

说明:

在上面的代码中,我们创建了一个集合coll1,它是一个字符串列表。然后,我们将使用flatMap()方法来转换集合。并且我们使用了_toLowerCase方法,该方法传递给该方法。然后打印新列表。

示例2:举例说明flatMap()使用seq和平坦化seq的工作方式

// Program to illustrate the working of 
// flatMap() function

object MyObject {
    def createSeq(a:Int) = Seq(a, a*a, a*a*a);
    
    def main(args: Array[String]) {
        val coll1 = Seq(6, 1, 8, 2, 9, 5) 
        print("Initial collection: " + coll1)
        
        val coll2 = coll1.flatMap(createSeq) 
        print("\nMapped collection with function to multiply by 2: " + coll2)
    }
}

输出:

Initial collection: List(6, 1, 8, 2, 9, 5)
Mapped collection with function to multiply by 2: 
List(6, 36, 216, 1, 1, 1, 8, 64, 512, 2, 4, 8, 9, 81, 729, 5, 25, 125)

说明:

在上面的代码中,我们创建了一个列表coll1,该列表为整数,然后使用flatMap()方法对其进行转换。使用的函数获取列表中的每个元素,然后将其转换为数字,其平方和立方的列表。然后flatMap()将其转换并扁平化为列表。然后我们打印了输出。