Skip to content
Related Articles

Related Articles

Improve Article

Stream dropWhile() method in Java with examples

  • Last Updated : 25 Apr, 2019

The dropWhile(java.util.function.Predicate) method returns two different types of stream depending upon whether the stream is ordered or not.

If the stream is ordered then a stream of the remaining elements of this stream after dropping the longest prefix of elements that match the given predicate is returned by method else a stream consisting of the remaining elements of this stream after dropping a subset of elements that match the given predicate.

In the case of the ordered stream, the longest prefix is a contiguous sequence of elements of this stream that match the predicate passed as a parameter to this method. The first element of the sequence is the first element of this stream, and the element immediately following the last element of the sequence does not match the given predicate.

In the case of the unordered stream, some elements of this stream match the given predicate and behaviour of this operation becomes nondeterministic; so this method is free to drop any subset of matching elements.
There may be some cases when all elements of this stream match the given predicate then this method will drop all elements and the result is an empty stream irrespective of order of Stream and when no elements of the stream match the given predicate then no elements are dropped and the result is the same as the input stream.

Syntax:



default Stream<T> dropWhile(Predicate<T> predicate)

Parameters: This method accepts a single parameter predicate which is a non-interfering, stateless predicate to apply to elements to determine the longest prefix of elements.

Return value: This method returns the new stream.

Below programs illustrate dropWhile(java.util.function.Predicate) method:

Program 1:




// Java program to demonstrate
// Stream.dropWhile method
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a stream of numbers from 1 to 10
        Stream<Integer> stream
            = Stream.of(4, 4, 4, 5, 6, 7, 8, 9, 10);
  
        // apply dropWhile to drop all the numbers
        // matches passed predicate
        List<Integer> list
            = stream.dropWhile(number -> (number / 4 == 1))
                  .collect(Collectors.toList());
  
        // print list
        System.out.println(list);
    }
}

The output printed on console of IDE is shown below.
Output:

Program 2:




// Java program to demonstrate
// Stream.dropWhile method
  
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class GFG {
  
    public static void main(String[] args)
    {
  
        // create a stream of names
        Stream<String> stream
            = Stream.of("aman", "amar", "suraj",
                        "suvam", "Zahafuj");
  
        // apply dropWhile to drop all the names
        // matches passed predicate
        List<String> list
            = stream.dropWhile(name -> (name.charAt(0) == 'a'))
                  .collect(Collectors.toList());
  
        // print list
        System.out.println(list);
    }
}

The output printed on console is shown below.
Output:

References: https://docs.oracle.com/javase/10/docs/api/java/util/stream/Stream.html#dropWhile(java.util.function.Predicate)

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :