Define
a functional interface, that computes a value based on multiple values.
package com.sample.functional.interfaces; /** * Functional interface that takes multiple values as input and return other value as result. * * @author krishna * * @param <T> * @param <U> * @param <V> * @param <W> */ public interface ProcessorFunction<T, U, V, W> { public W process(T obj1, U obj2, V obj3); }
Application.java
package com.sample.app; import java.util.*; import java.util.List; import com.sample.functional.interfaces.ProcessorFunction; public class Application { public static int getNoOfMatchedEle( ProcessorFunction<List<Integer>, Set<Integer>, Map<Integer, Integer>, Integer> processorFun, List<Integer> list, Set<Integer> set, Map<Integer, Integer> map) { return processorFun.process(list, set, map); } public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(21); list.add(11); list.add(13); list.add(31); Set<Integer> set = new HashSet<>(list); Map<Integer, Integer> map = new HashMap<>(); map.put(100, 199); map.put(5, 11); map.put(15, 47); map.put(2, 3); int totalEle = getNoOfMatchedEle((myList, mySet, myMap) -> { int totalElements = myList.size() + mySet.size() + myMap.size(); return totalElements; }, list, set, map); int eleGreater20 = getNoOfMatchedEle((myList, mySet, myMap) -> { int totalElements = 0; for (int ele : myList) { if (ele > 20) totalElements++; } for (int ele : mySet) { if (ele > 20) totalElements++; } for (int ele : myMap.keySet()) { if (ele > 20) totalElements++; } return totalElements; }, list, set, map); String result1 = String.format("Total elements are : %d", totalEle); String result2 = String.format("Total elements > 20 are : %d", eleGreater20); System.out.println(result1); System.out.println(result2); } }
Output
Total elements are : 14 Total elements > 20 are : 5
No comments:
Post a Comment