0
votes

Comment réécrire la boucle de comptage avec System.out dans le flux API

Comment puis-je réécrire ce code dans Java 8 Stream API?

public static void main(String[] args) {
    final List<String> ids = Arrays.asList("001", "007", "012", "099", "101", "167");
    int total = 0;
    for (String id : ids) {
        if (id.indexOf("1") >= 0) {
            System.out.println(id);
            total++;
        }
    }
    System.out.println("Total count: " + total);
}


1 commentaires

Stackoverflow n'est pas un service de rédaction de code. Qu'est-ce que tu as essayé jusque-là?


3 Réponses :


2
votes

Le flux équivalent peut être comme:

long total = ids.stream()
     .filter(id - > id.indexOf("1") >= 0)
     .peek(System.out::println)
     .count();


1 commentaires

Merci pour votre réponse la plus rapide. +1



1
votes

Nous pouvons le faire comme: xxx


0 commentaires

1
votes

Cela pourrait être encore plus simple: xxx pré>

Je préfère avoir une brève pause avec la condition. La déclaration ID -> id.indexof ("1")> = 0 code> signifie que le "1" code> est contenu dans la chaîne donnée à tout forte > Position, donc l'expression suivante utilisant String :: Contient CODE> Me plus approprié: p>

.filter(id -> id.startsWith("1"))


0 commentaires