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

Queen's Attack II HackerRank Solution in Java with Explanation

Queen's Attack II Problem's Solution in Java (Chessboard Problem)   Problem Description : You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack.  A queen is standing on an n * n chessboard. The chess board's rows are numbered from 1 to n, going from bottom to top. Its columns are numbered from 1 to n, going from left to right. Each square is referenced by a tuple, (r, c), describing the row r and column c, where the square is located. The queen is standing at position (r_q, c_q). In a single move, queen can attack any square in any of the eight directions The queen can move: Horizontally (left, right) Vertically (up, down) Diagonally (four directions: up-left, up-right, down-left, down-right) The queen can move any number of squares in any of these directions, but it cannot move through obstacles. Input Format : n : The size of the chessboard ( n x n ). k : The number of obstacles...

Java Hashset HackerRank Solution | Programming Blog

Java Hashset HackerRank Solution with Explanation   Problem Statement :- In computer science, a set is an abstract data type that can store certain values, without any particular order, and no repeated values. {1,2,3} is an example of a set, but {1,2,2} is not a set. Today you will learn how to use sets in java by solving this problem. You are given n pairs of strings. Two pairs (a,b) and (c,d) are identical if a = c and b = d. That also implies (a,b) is not same as (b,a). After taking each pair as input, you need to print number of unique pairs you currently have. See full problem description in HackerRank Website :- https://www.hackerrank.com/challenges/java-hashset/problem Let's see solution of problem. import java.util.HashSet; import java.util.Scanner; public class Solution {     public static void main(String[] args) {         Scanner s = new Scanner(System.in);         System.out.println("Enter tot...