Learn a little take, takeRight, takeWhile and filter of Scala every day
It's simple. Let's go straight to the example.
object takeWhileTest { def main(args: Array[String]): Unit = { val names = List("spark", "hadoop","kafka","hive", "mesos", "zero", "xyz","marathon") //Requirement: Get/filter out elements with element length 4 from the names container. //takeWhile, start with the first element, meet the condition, stay, until the first element does not meet the condition, end the loop //see, takeWhile may not operate on all elements names.takeWhile(_.length > 4 ).foreach{x => print(x + " ")} println("\n------------------") //Get 2 elements starting from the left, names.take(2).foreach{x => print(x + " ")} println("\n------------------") //Get 4 elements starting from the right, names.takeRight(4).foreach{x => print(x + " ")} println("\n------------------") //filter, also, meet the conditions, stay. It operates on all elements. names.filter(_.length > 4).foreach{x => print(x + " ")}//filter out "xyz" elements }}
Results:
spark hadoop kafka ------------------spark hadoop ------------------mesos zero xyz marathon ------------------spark hadoop kafka mesos marathon
Similarly, marathon source code, also reflected, as follows:
Summary:
take(3)---> indicates that the first three elements are taken
takeRight(3)---> means, start from the back/right, take out 3 elements
takeWhile()---> indicates that, starting from the left, the elements that meet the condition are taken out until the first element that does not meet the condition is encountered.
filter --> indicates that all elements satisfying the condition are taken out