Skip to main content

Consumer and Biconsumer In Java 8 | accept and andThen() method

What is Consumer and BiConsumer in Java?

Consumer and Biconsumer In Java 8

Consumer in Java

Consumer is Functional Interface which takes arguments only and return nothing.

Consumer is Interface in Java Programming language which introduced in Java 8 and it is part of java.util.function.

As a name suggest, it only consumes not return anything. means it consumes value and perform required operations.

@FunctionalInterface
public interface Consumer<T> {
  void accept(T t);
}

Consumer only contains two methods : one is abstract and another is default.

  1. void accept (T t) 
  2. default Consumer<T> andThen(Consumer<? super T> after)

You can see return type of accept method is void means it does not return anything.

Consumer can be used in all contexts where an object needs to be consumed, Like taken as input, and some operation is to be performed on the object without returning any result.

Since Consumer is a functional interface, hence it can be used as the assignment target for a lambda expression or a method reference.

Consumer only takes one parameter. Lets see simple demo of consumer. 

Example 1 : Print String and Number using Consumer

public class ConsumerDemo {
    
    public static void main(String[] args) {
    
        // Print string values.
        Consumer<String> stringConsumer = str -> {
            System.out.println(str);
        };
       
        stringConsumer.accept("Welcome to Programming Blog");
       
        // Print Integer values.
        Consumer<Integer> integerConsumer = number -> {
            System.out.println(number);
        };
       
        integerConsumer.accept(123);
    }
}

Output :

Welcome to Programming Blog
123

Lest see another simple example of consumer.

Example 2 : Print Object properties using Consumer

import java.util.function.Consumer;

public class ConsumerDemo {
    
    public static void main(String[] args) {
       
        Customer customer = new Customer("abcd", 123456789);
        customerInfoConsumer.accept(customer);
    }
    
    // Consumer
    static Consumer<Customer> customerInfoConsumer = customer ->
        System.out.println("Customer Name: " + customer.customerName + "\nCustomer Number:  " + customer.customerNumber);
    
       
    static class Customer {
        private final String customerName;
        private final int customerNumber;

        public Customer(String customerName, int customerNumber) {
            this.customerName = customerName;
            this.customerNumber = customerNumber;
        }
       
    }
}

Output :

Customer Name: abcd
Customer Number: 123456789

We have seen how to use accept() method now lets see how to use andThen() method in code.

Example 3 : Consumer andThen() method 

import java.util.function.Consumer; 

public class ConsumerDemo {

    public static void main(String[] args) {
        
         Consumer<String> first = a
            -> System.out.println("Hello");
        
         Consumer<String> second = b
            -> System.out.println(b);

         first.andThen(second).accept("Programmers");
        
    }

}

Output :

Hello
Programmers

 

BiConsumer in Java

As a name suggest, BiConsumer takes two arguments and does not return anything.

Same as Consumer BiConsumer contains only two methods :

  1. void accept(T t, U u)
  2. default BiConsumer<T,U> andThen(BiConsumer<? super T,? super U> after)

 Lets see example of BiConsumer :

Example 3 : Sum of two number using BiConsumer

import java.util.function.BiConsumer;

public class ConsumerDemo {
    
    public static void main(String[] args) {
       
        BiConsumer<Integer, Integer> biConsumer = (value1, value2)
-> System.out.println("Sum of two number : " +(value1+value2));

biConsumer.accept(10, 10);        
       
    }
}

Output :

Sum of two number : 20

Example 5 : Print map values using BiConsumer

public class ConsumerDemo {
    
    static void Print(Map<Integer, String> map, String name){ 
       
        System.out.println(name);

        map.forEach((key, val)->System.out.println(key+" "+val)); 
    } 
    
    public static void main(String[] args) {
       
        Map<Integer, String> map = new HashMap<Integer,String>();  
        map.put(65, "A");  
        map.put(66, "B");  
        map.put(67, "C");  
        map.put(68, "D");
        map.put(69, "E");
        
        // Referring method  
        BiConsumer<Map<Integer, String>, String> biCon = ConsumerDemo::Print;  
        biCon.accept(map, "ASCII Characters");  
       
    }
}

Output :

ASCII Characters
65 A
66 B
67 C
68 D
69 E

Example 6 : BiConsumer andThen() method

import java.util.function.BiConsumer;

public class ConsumerDemo {

    public static void main(String[] args) {
        
        BiConsumer<Integer, Integer> first = (a,b)
    
        -> System.out.println("Multiplication : " +10 * 10);
        
    
    BiConsumer<Integer, Integer> second = (c,d)
    
        -> System.out.println("Addition is : "+(c + d));

        first.andThen(second).accept(5,5);
        
    }

}

Output :

Multiplication : 100
Addition is : 10

 

Happy Coding.

Other Java 8 related articles :

Predicate and BiPredicate in Java 8 with Examples

Comments

Popular posts from this blog

Flipping the Matrix HackerRank Solution in Java with Explanation

Java Solution for Flipping the Matrix | Find Highest Sum of Upper-Left Quadrant of Matrix Problem Description : Sean invented a game involving a 2n * 2n matrix where each cell of the matrix contains an integer. He can reverse any of its rows or columns any number of times. The goal of the game is to maximize the sum of the elements in the n *n submatrix located in the upper-left quadrant of the matrix. Given the initial configurations for q matrices, help Sean reverse the rows and columns of each matrix in the best possible way so that the sum of the elements in the matrix's upper-left quadrant is maximal.  Input : matrix = [[1, 2], [3, 4]] Output : 4 Input : matrix = [[112, 42, 83, 119], [56, 125, 56, 49], [15, 78, 101, 43], [62, 98, 114, 108]] Output : 119 + 114 + 56 + 125 = 414 Full Problem Description : Flipping the Matrix Problem Description   Here we can find solution using following pattern, So simply we have to find Max of same number of box like (1,1,1,1). And ...

Sales by Match HackerRank Solution | Java Solution

HackerRank Sales by Match problem solution in Java   Problem Description : Alex works at a clothing store. There is a large pile of socks that must be paired by color for sale. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are. For example, there are n=7 socks with colors socks = [1,2,1,2,1,3,2]. There is one pair of color 1 and one of color 2 . There are three odd socks left, one of each color. The number of pairs is 2 .   Example 1 : Input : n = 6 arr = [1, 2, 3, 4, 5, 6] Output : 0 Explanation : We have 6 socks with all different colors, So print 0. Example 2 : Input : n = 10 arr = [1, 2, 3, 4, 1, 4, 2, 7, 9, 9] Output : 4 Explanation : We have 10 socks. There is pair of color 1, 2, 4 and 9, So print 4. This problem easily solved by HashMap . Store all pair of socks one by one in Map and check if any pair is present in Map or not. If pair is present then increment ans variable by 1 ...