Diskuze: Inicializace více tříd v Javě
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
hovorí ti niečo pole(prípadne iná vhodnejšia kolekcia) a cyklus? písať
5000 riadkov inicializácie, to chce guráž
Ano, ale ani na Stackoverflow sem nenašel řešení. Vím že to lze inicializovat jako pole tříd a přes cyklus zavolat konstruktory ale jenom v metodě. Avšak já se ptám jestli by to šlo naprogramovat tak aby to platilo pro celou třídu.
no veď to pole daj ako ako atribút triedy (a v konštruktori ho inicializuj pomocou cyklu nie?
public class Player {
public Player(){
...
}
}
public class Game {
private Player[] players;
public Game(){
this.players = new Player[5000];
for(int i = 0; i < this.players.length)
this.players[i] = new Player();
}
}
A co když jich bude 5001? bude muset zvětšovat pole? Není jednoduší to
hodit do kolekce?
public class Player {
public Player(){
...
}
}
public class Game {
private List<Player> players;
public Game(){
this.players = new ArrayList<Player>();
for(int i = 0; i < this.players.length)
this.players.add(new Player());
}
}
samozřejmě je to výhodnější, ale za to několikrát více paměťově náročnější.
samozrejme, že keď ich je premenlivý počet, tak je List jasná voľba, ale ja som odpovedal na jeho 5000.. dve verzie sa mi nechcelo písať
Velikost Listu se zjišťuje pomocí funkce size() a ne pomocí length.
Navíc tak jak to máš ti to vytváří prázdný list, podívej se pořádně
na to for a pochopíš proč
Ale jinak souhlasím s tím, že by byl List vhodnější než pole, paměťově
to samozřejmě vyjde úplně nastejno (vždyť to ukládá stejná data) a je
to daleko pružnější.
Zobrazeno 10 zpráv z 10.