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

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 ...

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...