Inicjalizacja listy obiektów

0

Mam listę obiektów kostka do gry i chcę ją wypełnić sześcioma obiektami.

List<Dice> dices = new ArrayList<>(6);

Oczywiście mogę zrobić w następnych wierszach add w pętli for , ale jaki będzie lepszy i szybszy sposób?

zamiana znacznika `` na <code class="java"> - @furious programming

4

Java 8 mówi nam, że:

List<Dice> dices = Stream.generate(Dice::new).limit(1).collect(Collectors.toList())
0

Dzięki, działa.

Teraz myślę nad tym jak zrobić to, że każdy obiekt Dice ma pole:

public int value = 1 + (int)(Math.random()*6);

i zmienna int sum znajdująca się pod Listą 'dices' będzie przechowywać sumę oczek z wszystkich kości. Dalej bez problemu poradziłbym sobie z pętlą 'for' przeskakując przez wszystkie elementy tablicy i dodając je, ale chce się wgłębić w listy i kolektory w java 8.

Chcę uniknąć takiego rozwiązania:

int sum = 0;
for(int i = 0; i < dices.size(); i++) sum += dices.get(i).value;
2
        List<Dice> dices = Stream.generate(Dice::new).limit(10).collect(Collectors.toList());
        AtomicInteger atomicInteger = new AtomicInteger(0);
        dices.stream().forEach(dice -> dice.setValue(atomicInteger.getAndIncrement()));
        int sum = dices.stream().collect(Collectors.summingInt(Dice::getValue));
        System.out.println(sum);

?

edit: ewentualnie jakbyś chciał od razu tworzyć obiekty przez jakis nie-pusty konstruktor to wtedy np.

List<Dice> dices = IntStream.range(0,10).boxed().map(Dice::new).collect(Collectors.toList());
1

Jeszcze coś ekstra, czyli moja implementacja kości do gry > https://github.com/Koziolek/sqrlaw/blob/master/src/main/java/pl/koziolekweb/sqrlaw/utils/Dice.java

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