Diskuze: Inicializace více tříd v Javě
Tvůrce
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.