0
votes

Comment puis-je convertir cette boucle for en java 8 stream analogique

Comment puis-je convertir ce code en flux java 8.

J'ai essayé de l'utiliser pour chacun, mais a échoué. Le code de boucle For fonctionne.

for(RestrictedInstrument restrictedInstrument : restrictedInstruments){
    List<Identifier> identifierList = restrictedInstrument.getIdentifier();
    setTicker(matrix, identifierList);
}

La méthode setTicker () doit être appelée avec un objet matrix et identifierList . p>


4 commentaires

Les instruments restreints sont-ils une liste?


restrictedInstruments.forEach (x -> setTicker (matrix, x.getIdentifier ())); si restrictedInstruments est une List . Arrays.stream (restrictedInstruments) .forEach (x -> setTicker (matrix, x.getIdentifier ())); s'il s'agit d'un tableau.


Double possible de Conversion de la boucle en flux Java 8


Pourquoi voulez-vous convertir le code en un flux Java 8? Quel code avez-vous écrit pour chaque code qui a échoué? Quelle était l'erreur? Quel est le type de RestrictedInstrument ?


3 Réponses :


1
votes

En supposant que restrictedInstruments soit list, vous mappez d'abord à identifierList, puis vous utilisez Stream.forEach () pour exécuter la méthode setTicker (...)

restrictedInstruments
  .stream()
  .map( RestrictedInstrument::getIdentifier )
  .forEach( identifierList -> setTicker(matrix, identifierList) )

Pour les tableaux, utilisez simplement Arrays.stream ( RestrictedInstruments)


0 commentaires

2
votes

Vous pouvez simplement utiliser List.forEach () :

restrictedInstruments.forEach(i -> setTicker(matrix, i.getIdentifier()));


0 commentaires

1
votes

Vous pouvez diffuser la liste, puis passer simplement le consommateur qui appelle simplement la fonction setTicker.

 restrictedInstruments.stream()
.forEach(identifierList -> setTicker(matrix, identifierList.getIdentifier()));


0 commentaires