expresión lambda + interfaz funcional para la suma de los números enteros en un array

ary:

Estoy abordar un ejercicio que pide para crear una interfaz funcional cuyo método toma como entrada un entero k y una matriz de enteros y devuelve un entero. Entonces, debería asignar a una instancia de la interfaz de una expresión lambda que devuelve la suma de todos los valores de la matriz de menos de o igual a k.

Para la interfaz Creo que debería hacer algo como:

@FunctionalInterface
public interface FunctionOnAnArray {
    int apply(int k, int ... intArray);
}

Sin embargo, no puedo averiguar la expresión lambda.

public class Test {
    int sum = 0;
    FunctionOnAnArray f = (k, intArray) -> { for (int i : intArray) if (i <= k) sum += i; return sum; };
}

Esto parece demasiado torpe.

también:

Se podría simplificar como:

FunctionOnAnArray f = (k, arr) -> Arrays.stream(arr)
    .filter(a -> a <= k)
    .sum();

Aparte : También puede optar por no definir la interfaz con Varargs y actualización como:

@FunctionalInterface
public interface FunctionOnAnArray {
    int apply(int k, int[] arr);
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215226&siteId=1
Recomendado
Clasificación