Inicjalizacja listy obiektów

2015-01-20 00:32
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

edytowany 1x, ostatnio: furious programming, 2015-01-20 01:07
Wstawiaj kod w znaczniki kolorujące składnię; - furious programming 2015-01-20 01:07

Pozostało 580 znaków

2015-01-20 09:24
4

Java 8 mówi nam, że:

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

Pozostało 580 znaków

2015-01-20 16:14
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;
edytowany 1x, ostatnio: furious programming, 2015-01-20 16:15
Nie cytuj całego posta, jeśli odpisujesz zaraz pod nim i do całości się odnosisz; - furious programming 2015-01-20 16:15

Pozostało 580 znaków

2015-01-20 16:34
        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());

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-20 16:39
Dzięki, teraz to sobie porozgryzam :) - novpet 2015-01-20 16:39

Pozostało 580 znaków

2015-01-21 08:49
1

Jeszcze coś ekstra, czyli moja implementacja kości do gry > https://github.com/Koziolek/s[...]lekweb/sqrlaw/utils/Dice.java

łołoło - co Ty robisz przez public static final Dice K10 = () -> 10; - tutaj implementujesz funkcyjny interface i jego metoda maxDots(); zwracała np: 10 ? ale nie spotkałem się z tym że mogę pominąć słowo return ?? Ponieś mi kaganek oświaty bo ... mam małego konfjuza widząc ten kodd - ale, fakt, ładny :) EDITUS: DOBRA WIEM JUŻ - MOGĘ POMINĄĆ RETURNA OK :) - niezdecydowany 2015-01-21 09:19
Lambda expressions w praktyce. Nadal wygląda to paskudnie, ale to już kwestia języka - Koziołek 2015-01-21 09:22
e tam paskudnie, całkiem spoko. - niezdecydowany 2015-01-21 10:08
Wolałbym zamias () -&gt; 4 napisać np. 4::new - Koziołek 2015-01-21 13:18
dla mnie spoko wygląda właśnie taki syntaxt (params) -> impl. , w rubym np: przekazujesz tak: jakis_call() { |parametry| costam robisz }- kwestia gustu chyba, bo dla mnie takie krótkie jaja Class::JakisStatic czy coś, wyglądają śmiesznie, - niezdecydowany 2015-01-21 13:49

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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