Zatrzymanie strumienia po wykonaniu instrukcji if lub else

0
    testSet.stream().forEach(m -> {
            if(m.getAnimal.equals(dog)){
                m.setAge(m.getAge() + 1);  
            } else {
                Cat cat = new Cat();
            }
        });

Mam taki strumień i chciałbym, aby po od razu po wykonaniu instrukcji if lub else stream się zatrzymywał. Teraz aktualnie mam tak, że jeżeli stream wejdzie w else to tworzy się tyle obiektów cat ile jest elementów w testSet., z if analogicznie. Jest to jakoś wykonalne ?

1

Przede wszystkim używanie .stream.forEach jest tu kompletnie bez sensu.

0

Znaczy, chcesz wykonać ta instrukcje raz? Wysterczy wywołać getAny

0

j.w., ale o coś takiego ci chodzi? Idea ta sama, tylko tutaj Stringi.

List.of("a","b", "c")
                .stream()
                .findFirst()
                .map( x -> {
                    if ( x.length() == 0 ){
                        return "Do something...";
                    } else{
                        return "Do something else...";
                    }
                });
0
shagrin napisał(a):

Przede wszystkim używanie .stream.forEach jest tu kompletnie bez sensu.

Dlaczego ? I czego użyć w zamian ?

AndrzejAd, przetestuję jak wrócę do domu i dam znać.

0
wartek01 napisał(a):

Znaczy, chcesz wykonać ta instrukcje raz? Wysterczy wywołać getAny

Tego ifa chce przeprowadzić dla wszystkich elementów setu i jeżeli dla wszystkich zwróci false, to chce wywołać jeden raz to co jest pod else. Chyba źle się wyraziłem na początku

0
if ( List.of("a","b", "c")
                .stream()
                .allMatch( (x) -> ! (x.length() == 0 ))){
            System.out.println("Wszystkie mają rozmiar inny od 0.");
        }

Analogicznie możesz sobie zrobić.

0

Okej, a jeżeli dla któregoś z nich zwróci wartość true, to jak mogę zmodyfikować x ?

0

Wklepałem sobie teraz tą instrukcje i to nie o to chodzi. Bo to sprawdza czy wszystkie elementy mają rozmiar różny od 0, a ja chcę sprawdzać, nie dla wszystkich łącznie, tylko dla każdego po kolei i jeżeli dla któregoś x da mi false, to chcę ten x zmodyfikować i przerwać strumień.

1

see takeWhile
(od javy 9).

1 użytkowników online, w tym zalogowanych: 0, gości: 1