Proveedor válida para el método de flujo de cobro revertido

Ashishkumar Singh:

Yo sólo estaba tratando de crear algo similar a la Collectors.toList()de la mía pero no parece funcionar

import java.util.ArrayList;

public class ShipmentTracingDTO {

boolean destination = false;

public ShipmentTracingDTO(Boolean destination) {
    this.destination = destination;
}

public ShipmentTracingDTO() {
}

public static void main(String[] args) {
    ArrayList<ShipmentTracingDTO> tracings = new ArrayList<>();
    tracings.add(new ShipmentTracingDTO(true));
    tracings.add(new ShipmentTracingDTO(true));
    tracings.add(new ShipmentTracingDTO(false));
    tracings.add(new ShipmentTracingDTO(false));
    ArrayList<ShipmentTracingDTO> newTracings = new ArrayList<>();

// Error coming for ArrayList::new : The constructed object of type ArrayList is 
//incompatible with the descriptor's return type: R

    tracings.stream().collect(ArrayList::new, (left, right) -> left.add(right), (left, right) -> {
        left.addAll(right);
        return left;
    });
}

private boolean getDestination() {

    return destination;
}

}

Mi pregunta es si ArrayList::newno funciona aquí, lo que va a trabajar. Probé diferentes variaciones pero ninguno parece funcionar

Ravindra Ranwala:

Sólo cambiarlo como tal,

tracings.stream().collect(ArrayList::new, (left, right) -> left.add(right), (left, right) -> {
    left.addAll(right);
});

Lo que necesita es un BiConsumerNO una BinaryOperator. Lo que está pasando por encima de una BinaryOperator.

He aquí un ejemplo BinaryOperator.

BinaryOperator<List<Integer>> s = (left, right) -> {
            left.addAll(right);
            return left;
};

Como una buena práctica de ingeniería, siempre prefieren método referencias a lambdas. Así que aquí está la versión mejorada usando referencias de métodos en lugar de lambdas.

tracings.stream().collect(ArrayList::new, List::add, List::addAll);

Supongo que te gusta

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