Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ass.sivakfil.cvi5.task3;
- import java.util.List;
- import java.util.function.BiFunction;
- import java.util.function.BinaryOperator;
- import java.util.function.Predicate;
- import java.util.stream.Collectors;
- import java.util.stream.IntStream;
- public class Task3 {
- public static void main(String[] args) {
- List<Integer> numbers = IntStream.range(0, 10).boxed().collect(Collectors.toList());
- System.out.println(sumEvenNumbers(numbers));
- System.out.println(sumOddNumbers(numbers));
- System.out.println(mulEvenNumbers(numbers));
- System.out.println(genericAggregate1(numbers, (a,b) -> a+b, (i) -> (i % 2) == 0));
- System.out.println(genericAggregate2(numbers, (a,b) -> a+b, (i) -> (i % 2) == 0));
- }
- // possible solution 1
- private static int genericAggregate1(List<Integer> nums, BinaryOperator<Integer> aggregation, Predicate<Integer> filter) {
- return nums.stream()
- .filter(filter)
- .reduce(aggregation)
- .orElse(0);
- }
- // possible solution 2
- private static int genericAggregate2(List<Integer> nums, BinaryOperator<Integer> aggregation, Predicate<Integer> filter) {
- int acc = 0;
- for(Integer i : nums) {
- if(filter.test(i)) {
- acc += aggregation.apply(acc, i);
- }
- }
- return acc;
- }
- private static int sumEvenNumbers(List<Integer> numbers) {
- int acc = 0;
- for(int i : numbers) {
- if(i % 2 == 0) {
- acc += i;
- }
- }
- return acc;
- }
- private static int sumOddNumbers(List<Integer> numbers) {
- int acc = 0;
- for(int i : numbers) {
- if(i % 2 != 0) {
- acc += i;
- }
- }
- return acc;
- }
- private static int mulEvenNumbers(List<Integer> numbers) {
- int acc = 1;
- for(int i : numbers) {
- if(i % 2 == 0) {
- acc *= i;
- }
- }
- return acc;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement