Jak to uprościć wypisywanie zbioru 8

0
for (List<Integer> set : generateSubsets(1, n, k)) {
        for (int j = 0; j < set.size(); j++) {
                    System.out.print(set.get(j) + " ");
        }
        System.out.println();
}

Założę się, że można to zastąpić jakimś np. strumieniem z Javy 8...
do końca nie wiem jak to pozbierać i jak zastąpić te pętle (przynajmniej tę wewn.).

Wiem, że formatowanie wyjścia jest istotne.

W ostateczności ma to wyglądać przykładowo tak:
1 2 3 4 5
1 2 3

0
set.forEach(s -> System.out.print(s + " "));
 
0

Ok, super ;)
Mniej więcej o to chodziło.
Tylko jeden szczegół, o którym zapomniałem...
jak bez spacji na końcu wiersza?

0
Biały Kaczor napisał(a):

Ok, super ;)
Mniej więcej o to chodziło.
Tylko jeden szczegół, o którym zapomniałem...
jak bez spacji na końcu wiersza?

a widać tę dodatkową spację w konsoli? :|
Jeśli przeszkadza to zamień dodawanie na końcu na dodawanie na początku pod warunkiem że to nie pierwszy element - czyli musisz stworzyć zmienną bool którą ustawisz na false po pierwszym elemencie
Albo możesz zamienić List<Integer> na List<String> - wtedy możesz użyć System.out.print(String.join(" ", list));

Ogólnie nie było nic złego w tej pętli którą miałeś - zamiana for na .forEach nie zwiększa czytelności a tylko spowalnia działanie pętli - .forEach to akurat funkcja której powinno się omijać moim zdaniem na rzecz zwyczajnej pętli

0
Mały Młot napisał(a):

a widać tę dodatkową spację w konsoli? :|

Niektóre sprawdzarki widzą, ale tu tym razem bez znaczenia ;)

Ostatecznie mam takie coś:

generateSubsets(1, n, k).forEach(set -> {
                    set.forEach(s -> System.out.print(s.toString() + " "));
                    System.out.println();
});

Ostatecznie rzeczywiście działa to... kilkanaście millisekund wolniej... tak jak piszesz.
Nie spodziewałem się tego... myślałem, że to lepiej zoptymalizowane.

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