Scala 特质 Traversable | 第三部分

Scala 特质 Traversable | 第三部分

操作如下:

  • 子集合检索操作:
    这里的操作有 slice,drop,dropWhile,filter,filterNot,tail,take,takeWhile 和 init。这些操作用于返回一些子集合。
    示例:

    “`scala // Scala program of Sub-Collection
    // retrieval operation
      
    // Creating object 
    object SubCollection
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(17, 19, 21, 29, 31)
      
            // Applying Sub-Collection 
            // retrieval operation
            val y = x.init 
      
            // Displays all the elements of 
            // the List except the last one
            println(y)
        }
    }
    </li>
    </ul>

    <pre><code class="line-numbers">输出:
    “`scala List(17, 19, 21, 29)

    在这里, init 检索 Traversable 集合的所有元素,但不包括最后一个元素。
    示例:

    “`scala // Scala program of Sub-Collection
    // retrieval operation
      
    // Creating object 
    object SubCollection
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(17, 19, 21, 29, 31)
      
            // Applying Sub-Collection 
            // retrieval operation
            val y = x.tail
      
            // Displays all the elements of 
            // the List except the first one
            println(y)
        }
    }

    <pre><code class="line-numbers">输出:
    “`scala List(19, 21, 29, 31)

    在这里, tail 检索 Traversable 集合的所有元素,但不包括第一个元素。
    示例:

    “`scala // Scala program of Sub-Collection
    // retrieval operation
      
    // Creating object 
    object SubCollection
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(27, 29, 31, 49, 51, 56)
      
            // Applying Sub-Collection 
            // retrieval operation
            val y = x.slice(2, 5)
      
            // Displays the elements 
            // from index 2 to 4 
            println(y)
        }
    }

    <pre><code class="line-numbers">输出:
    “`scala List(31, 49, 51)

    在这里, slice 将返回给定索引范围内的元素,不包括最后一个索引。
    示例:

    “`scala // Scala program of Sub-Collection
    // retrieval operation
      
    // Creating object 
    object SubCollection
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(37, 49, 51, 69, 71, 86)
      
            // Applying Sub-Collection 
            // retrieval operation
            val y = x.take(2)
      
            // Displays the first two 
            // elements of the list
            println(y)
        }
    }

    <pre><code class="line-numbers">输出:
    “`scala List(37, 49)

    在这里,此操作将返回 take 操作中给定的元素个数。
    示例:

    “`scala // Scala program of Sub-Collection
    // retrieval operation
      
    // Creating object 
    object SubCollection
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(33, 34, 36, 37, 39, 40, 44)
      
            // Applying Sub-Collection 
            // retrieval operation
            val y = x.drop(4)
      
            // Displays all the elements of 
            // the list except the first 
            // four elements
            println(y)
        }
    }

    <pre><code class="line-numbers">输出:
    “`scala List(39, 40, 44)

    在这里,这个操作将返回除第一个四个元素之外的所有元素。

    List(39, 40, 44)
    

    在这里, 这个操作将返回集合中除了参数中给出的前几个元素外的所有元素。
    例如:

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(2, 5, 9, 13, 17, 20)
    
            // 应用子集合检索操作
            val y = x.dropWhile(_ < 10)
    
            // 显示大于或等于 10 的列表的所有元素
            println(y)
        }
    }
    

    输出:

    List(13, 17, 20)
    

    在这里, dropWhile 将删除给定条件满足之前的元素并返回其余的左侧元素。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(2, 5, 9, 10, 13, 17, 20)
    
            // 应用子集合检索操作
            val y = x.takeWhile(_ < 13)
    
            // 显示小于 13 的列表的所有元素
            println(y)
        }
    }
    

    输出:

    List(2, 5, 9, 10)
    

    在这里, takeWhile 将取得满足给定条件的元素并返回这些元素。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(9, 65, 99, 10, 23, 17, 12)
    
            // 应用子集合检索操作
            val y = x.filter(_ < 23)
    
            // 显示小于 23 的列表的所有元素
            println(y)
        }
    }
    

    输出:

    List(9, 10, 17, 12)
    

    在这里, filter 将返回满足给定条件的所有元素并丢弃其他元素。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(9, 65, 99, 10, 23, 17, 12)
    
            // 应用子集合检索操作
            val y = x.filterNot(_ < 23)
    
            // 显示大于或等于 23 的列表的所有元素
            println(y)
        }
    }
    

    输出:

    List(65, 99, 23)
    

    在这里, filterNot 将返回不满足给定条件的所有元素并丢弃其他元素。

    • 子分区操作:
      这些操作包括 span, partition, splitAt, groupBy 。这些操作用于将集合的元素分开并返回一些子集合。
      例如 :
    ```scala
    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
            // 分成两个组
            val (a, b) = x.span(_ < 5)
    
            // 显示 a 和 b 中的元素
            println(a)
            println(b)
        }
    }
    

    输出:

    List(1, 2, 3, 4)
    List(5, 6, 7, 8, 9, 10)
    

    在这里, span 将元素分成两部分, 第一部分中的元素满足给定条件, 第二部分中的元素不满足条件。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
            // 分成两个组
            val (a, b) = x.partition(_ < 5)
    
            // 显示 a 和 b 中的元素
            println(a)
            println(b)
        }
    }
    

    输出:

    List(1, 2, 3, 4)
    List(5, 6, 7, 8, 9, 10)
    

    在这里, partition 将元素分成两部分, 第一部分中的元素满足给定条件, 第二部分中的元素不满足条件。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
            // 从第二个元素开始分成两个组
            val (a, b) = x.splitAt(2)
    
            // 显示 a 和 b 中的元素
            println(a)
            println(b)
        }
    }
    

    输出:

    List(1, 2)
    List(3, 4, 5, 6, 7, 8, 9, 10)
    

    在这里, splitAt 将元素分成两部分, 前半部分包含列表中从开头到给定元素之前的所有元素, 后半部分包含列表中剩余的元素。
    例如 :

    // Scala程序的子集合
    // 检索操作
    
    // 创建对象
    object SubCollection
    {
    
        // 主函数
        def main(args: Array[String]) 
        {
    
            // 创建数字列表
            val x = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
    
            // 根据奇偶分成两个组
            val y = x.groupBy(_ % 2 == 0)
    
            // 显示 y 中的元素
            println(y)
        }
    }
    

    输出:

    Map(false -> List(1, 3, 5, 7, 9), true -> List(2, 4, 6, 8, 10))
    

    在这里, groupBy 根据给定条件将元素分组, 然后将这些元素分配给具有相同key的组中。

    // 分割操作的 Scala 程序 // 创建对象 object Subdivision { // 主方法 def main(args: Array[String]) { // 创建数字列表 val q = List(7, 9, 11, 15, 17, 19, 22) // 应用分割操作 val r = q.span(_ < 15) // 在两个部分中显示所有元素 println(r) } }
    “`

    输出:

    <pre><code class="language-scala line-numbers">(List(7, 9, 11), List(15, 17, 19, 22))
    </code></pre>

    这里,span 将给定的可遍历集合的元素分成两部分,第一部分是通过执行 takeWhile 操作获取的,第二部分是通过执行 dropWhile 操作获取的。 例如:

    // 分割操作的 Scala 程序 // 创建对象 object Subdivision { // 主方法 def main(args: Array[String]) { // 创建数字列表 val q = List(17, 29, 31, 36, 37, 39, 42) // 应用分割操作 val r = q.partition(_ < 35) // 在两个部分中显示所有元素 println(r) } }

    输出:

    <pre><code class="language-scala line-numbers">(List(17, 29, 31), List(36, 37, 39, 42))
    </code></pre>

    这里,partition 将集合分成两部分,第一部分是满足给定条件的元素,第二部分是其余元素。 例如:

    // 分割操作的 Scala 程序 // 创建对象 object Subdivision { // 主方法 def main(args: Array[String]) { // 创建数字列表 val q = List(17, 29, 31, 36, 37, 39, 42) // 应用分割操作 val r = q.splitAt(4) // 在两个部分中显示所有元素 println(r) } }

    输出:

    <pre><code class="language-scala line-numbers">(List(17, 29, 31, 36), List(37, 39, 42))
    </code></pre>

    这里,splitAt 在给定位置将集合元素分成两部分,第一部分通过 take 操作获得,第二部分通过 drop 操作获得。 例如:

    // 分割操作的 Scala 程序 // 创建对象 object Subdivision { // 主方法 def main(args: Array[String]) { // 创建数字列表 val x = List(21, 20, 33, 40, 27, 62) // 应用分割操作 val y = x.groupBy { // 部分函数 case z: Int if (z % 3 <span class="text-highlighted-inline" style="background-color: #fffd38;"> 0) => z + 3 case z: Int if (z % 2 </span> 0) => z + 2 } // 显示列表的映射 println(y) } }

    输出:

    Map(42 -> List(40), 24 -> List(21), 64 -> List(62), 22 -> List(20), 36 -> List(33), 30 -> List(27))

    这里,groupBy 根据所给部分函数将可遍历集合划分并返回映射。
    * 元素测试方法:<br />
    这些方法包括 forall、exists 和 count。这些方法用于测试给定的可遍历集合是否满足指定条件。<br />
    <strong>例如:</strong>

    <pre><code class="language-scala line-numbers">//// Scala program of Element test methods 
      
    // Creating object 
    object ElemTest
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val q = List(7, 9, 11, 15, 17, 19, 22)
      
            // Applying Element test 
            // methods
            // Checking whether the 
            // element exists or not
            println(q.exists(_ > 22))
            println(q.exists(_ > 19))
            println(q.exists(_ == 7))
      
            // Checking conditions for 
            // all elements
            println(q.forall(_ > 0))
            println(q.forall(_ > 10))
      
            // Count of elements 
            println(q.count(_ > 15))
        }
    }

    </code></pre>

    输出:

    <pre><code class="language-scala line-numbers">false
    true
    true
    true
    false
    4
    </code></pre>

    这里,exists 方法用于检查列表中是否存在满足给定条件的元素,而 forall 方法用于检查列表中是否所有元素都满足给定条件。count 方法用于计算满足给定条件的元素数。 // Scala程序的“Element test” // 创建对象 object Elementtest { // 主方法 def main(args: Array[String]) { // 创建数字列表 val x = List(21, 20, 33, 40, 27, 62) // 应用Element测试方法 val y = x forall (_ < 63) // 如果所有元素都小于63,则显示true println(y) } }
    “`

    输出:

    true
    

    在这里,如果集合的所有元素都满足给定条件,则 forall 将返回true;否则返回false。
    示例:

    // Scala程序的“Element test”
      
    // 创建对象
    object Elementtest
    {
      
        // 主方法
        def main(args: Array[String]) 
        {
      
            // 创建数字列表
            val x = List(21, 20, 33, 40, 27, 62)
      
            // 应用Element测试方法
            val y = x exists (_ < 30) 
      
            // 如果一些元素小于30,则显示true
            println(y)
        }
    }
    

    输出:

    true
    

    在这里,如果集合的一些元素满足给定条件,则 exists 将返回true;否则返回false。
    示例:

    // Scala程序的“Element test”
      
    // 创建对象
    object Elementtest
    {
      
        // 主方法
        def main(args: Array[String]) 
        {
      
            // 创建数字列表
            val x = List(21, 20, 33, 40, 27, 62)
      
            // 应用Element测试方法
            val y = x count(_ < 40) 
      
            // 显示满足给定条件的元素的数量
            println(y)
        }
    }
    

    输出:

    4
    

    在这里, count 将显示集合中满足给定条件的元素数。
    阅读更多:Scala 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程