Java Streams-Modifier le champ d'un élément


J'ai cherché sur Google pendant un moment, mais je n'ai pas trouvé la réponse que je cherchais.

J'ai un flux de produits, et chacun de ceux-ci contient ces champs:

private String ID;
private float price;
private int quantity;

J'ai besoin de changer la quantité champ d'un produit spécifique, sans consommer le reste du flux. Est-il possible?

Comment puis-je rechercher pour cet élément (par produit ID) et modifiez la valeur de quantité champ?

Je je pensais pouvoir utiliser .peek(), mais je ne pouvais pas comprendre comment y parvenir.

Author: Tagir Valeev, 2015-06-29

1 answers

En supposant que vous avez une méthode setter pour la quantité, vous pouvez utiliser peek pour changer la valeur. Testez l'ID de produit que vous voulez, puis appelez le setter, le tout dans une expression lambda (a Consumer).

stream.peek( p -> {
    if ("YourID".equals(p.getID()))
    {
         p.setQuantity(newQuantity);
    }
});
 4
Author: rgettman, 2015-06-29 23:42:16