Scala Trait Traversable | Set-4

Prerequisite :-
Scala Trait Traversable | Set-1
Scala Trait Traversable | Set-2
Scala Trait Traversable | Set-3
It is recommended to view Set-1, Set2 and Set-3 before this one.
The operations are as follows:

  • Folds:
    The operations here are reduceRight, reduceLeft, /: or foldLeft, :\ or foldRight. This methods apply binary operation to the successive elements of the Traversable collection.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Folds
      
    // Creating object 
    object Folds
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(8, 6, 4, 2)
      
            // Applying method of
            // Folds
            // val y = x.foldLeft(0)(_ - _) or
            val y = (0 /: x)(_ - _)
      
            // Evaluates the Expression 
            // given below and displays it
            // ((((0 - 8) - 6) - 4) - 2) 
            println(y)
      
        }
    }

    chevron_right

    
    

    Output:



    -20
    

    Here, foldLeft(0) is the desired operation where zero is the ‘initial value’.
    This method applies binary operation between successive elements of the given Traversable collection, moving from left to right and starting with the initial value.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Folds
      
    // Creating object 
    object Folds
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(8, 6, 4, 2)
      
            // Applying method of
            // Folds
            // val y = x.foldRight(0)(_ - _) or
            val y = (x :\ 0)(_ - _)
      
            // Evaluates the Expression 
            // given below and displays it
            // (8 - (6 - (4 - (2 - 0))))
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    4
    

    Here, foldRight will perform binary operation between successive elements of the collection, moving from left to right and ending with initial value.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Folds
      
    // Creating object 
    object Folds
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(8, 6, 4, 2)
      
            // Applying method of folds
            val y = x.reduceLeft(_ - _)
      
            // Evaluates the Expression 
            // given below and displays it
            // (((8 - 6) - 4) -2)
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    -4
    

    Here, reduceLeft performs the binary operation between the successive elements of the collection like foldLeft but considering first element of the given collection as initial value.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Folds
      
    // Creating object 
    object Folds
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(8, 6, 4, 2)
      
            // Applying method of folds
            val y = x.reduceRight(_ - _)
      
            // Evaluates the Expression 
            // given below and displays it
            // (8 - (6 - (4 - 2)))
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    4
    

    Here, reduceRight will perform binary operation like foldRight but considering last element of the collection as initial value.

  • Specific folds:
    The operations here are min, max, product, and sum. These operations operate on distinct kind of collections of Traversable.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Specific folds
      
    // Creating object 
    object Specificfold
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(3, 4, 7, 10)
      
            // Applying method of 
            // Specific folds
            val y = x.sum
      
            // Displays sum of all the
            // elements in the list 
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    24
    

    Here, sum will return sum of all the elements in the collection given.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Specific folds
      
    // Creating object 
    object Specificfold
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(2, 5, 10, 12)
      
            //Applying method of 
            //Specific folds
            val y = x.product
      
            //Displays product of all 
            //the elements in the list 
            println(y)
        }
    }

    chevron_right

    
    

    Output:


    1200
    

    Here, product will return product of all the elements in the collection given.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Specific folds
      
    // Creating object 
    object Specificfold
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(21, 15, 27, 22)
      
            // Applying method of 
            // Specific folds
            val y = x.max
      
            // Displays largest element
            // of the list
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    27
    

    Here, max will return largest element of all the elements in the collection given.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Specific folds
      
    // Creating object 
    object Specificfold
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(21, 15, 27, 22)
      
            // Applying method of 
            // Specific folds
            val y = x.min
      
            // Displays smallest element
            // of the list
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    15
    

    Here, min will return smallest element of all the elements in the collection given.

  • String operations :
    The operations here are addString, mkString, stringPrefix. This operations are utilized to provide another methods for converting a given collection of Traversables to a String.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Strings
      
    // Creating object 
    object Strings
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(7, 8, 9, 10, 11)
            val v = List(21, 19, 17, 15)
      
            // Applying Strings operations
            val y = x.mkString(" < ")
            val w = v.mkString(" > ")
      
            // Displays all the elements
            // separated by (<)
            println(y)
            println("\n")
      
            // Displays all the elements
            // separated by (>)
            println(w)
        }
    }

    chevron_right

    
    

    Output:

    7 < 8 < 9 < 10 < 11
    
    
    21 > 19 > 17 > 15
    

    Here, mkString(“<") is the desired operation where, “<" is the separator.
    This operation is utilized to return the given collection of elements separated by the given separator.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Strings
      
    // Creating object 
    object Strings
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating List of numbers 
            val x = List(7, 8, 9, 10, 11)
      
            // Creating StringBuilder
            val B = new StringBuilder("The numbers are: ")
          
            // Applying Strings operation
            val y = x.addString(B, ", ")
      
            // Displays all the elements
            // of the list in the String 
            // builder separated by (,)
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    The numbers are: 7, 8, 9, 10, 11
    

    Here, addString(B, “, “) is the desired operation where, “B” is a String builder and “, ” is a separator.
    This operation Adds the given collection of the elements in the StringBuilder separated by the stated separator.
    Example :

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Scala program for operations
    // of Strings
      
    // Creating object 
    object Strings
    {
      
        // Main method
        def main(args: Array[String]) 
        {
      
            // Creating a Set of numbers 
            val x = Set(7, 8, 9, 10, 11)
          
            // Applying Strings operation
            val y = x.stringPrefix
      
            // Displays the name of the 
            // collection used
            println(y)
        }
    }

    chevron_right

    
    

    Output:

    Set
    

    Here, stringPrefix will return the name of the collection used.

  • Copying operations:
    The two Copying operations are copyToArray and copyToBuffer. These operations are utilized to Copy the elements of the Traversable Collection to an Array or to a buffer.
  • View operations:
    The operations here are view, view(from, to). These operations are utilized to produce a view over the collection of Traversable given.


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.