@ilyablbnv
Студент.Энтузиаст

Как правильно использовать лямбда выражения в Java?

Всем доброго вечера! Есть некий код, использующий лямбда выражения.
public class Calculator {

     interface IntegerMath {

        int operation(int a, int b);
    }

     int operateBinary(int a, int b, IntegerMath op) {
        return op.operation(a, b);
    }

    public static void main(String... args) {
        Calculator myApp = new Calculator();
        IntegerMath addition = (a, b) -> a + b;
        IntegerMath subtraction = (a, b) -> a - b;
        System.out.println("40 + 2 = "
                + myApp.operateBinary(40, 2, addition));
        System.out.println("20 - 10 = "
                + myApp.operateBinary(20, 10, subtraction));
    }
}


Подобно этому надо реализовать нахождение max, min, sum, count. Знаю, что для этого можно использовать SummaryStatistics, но мне надо именно через эти выражения. Вот что есть у меня:

public class Solution2 {
    
    interface RandomDouble {
        double operation(double[] numbers);
    }
    
    public double operateBinary(double[] numbers, RandomDouble op) {
        return op.operation(numbers);
    }
    
    public static void main(String[] args) {
        Solution2 myApp = new Solution2();
//        RandomDouble sum
//        RandomDouble max
//        RandomDouble min
        System.out.println("Sum: " + myApp.operateBinary(numbers, sum));
        System.out.println("Min: " + myApp.operateBinary(numbers, min));
        System.out.println("Max: " + myApp.operateBinary(numbers, max));
    }
}


Не знаю как прописать именно само выражение. Как это реализовать и возможно ли это? Спасибо заранее.
  • Вопрос задан
  • 870 просмотров
Решения вопроса 1
Vestail
@Vestail
Software Engineer
Просто синтаксис не поймете?
public static void main(String[] args) {
        Solution2 myApp = new Solution2();
        double[] numbers = new double[10];
        RandomDouble sum = (arr) -> {  double forSum = arr[0]; return forSum; };
        RandomDouble min = (arr) -> { double forMin = arr[0]; return forMin; };
        RandomDouble max = (arr) -> {  double forMax = arr[0]; return forMax; };
        System.out.println("Sum: " + myApp.operateBinary(numbers, sum));
        System.out.println("Min: " + myApp.operateBinary(numbers, min));
        System.out.println("Max: " + myApp.operateBinary(numbers, max));
    }
}

Или не поймете алгоритм как найти сумму?:)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы