Witam wszystkich
Proszę o poradę, czy istnieje jakiś przyjęty sposób na wykorzystanie List w klasach w Javie, czy sposób w jaki ja to robię jest poprawny? Chodzi o to, że mam klasę, w której znajduje się lista elementów innej klasy, a w tej klasie kolejna lista elementów kolejnej klasy.
Docelowo w poszczególnych elementach klas będą zapisywane informacje z pliku CSV. Proszę o sugestie co tutaj ewentualnie można (a nawet trzeba) pozmieniać.
Kod programu testowego przedstawiam poniżej:
import java.util.ArrayList;
import java.util.List;
public class Osiedle
{
List<Blok> bloki;
public void start()
{
bloki = new ArrayList<Blok>();
bloki.add(new Blok());
bloki.get(0).numerBloku=1;
bloki.get(0).liczbaKlatek=5;
bloki.get(0).liczbaMieszkan=12;
// bloki.get(0).mieszkanie = new ArrayList<Mieszkanie>(); <-- zamiast tego tworzona jest lista w konstruktorze klasy Blok
bloki.get(0).mieszkanie.add(new Mieszkanie());
bloki.get(0).mieszkanie.get(0).pietro=1;
bloki.get(0).mieszkanie.get(0).numerMieszkania=10;
bloki.get(0).mieszkanie.get(0).powierzchnia=60.5;
// bloki.get(0).mieszkanie.get(0).lokator=new ArrayList<Lokator>(); <-- zamiast tego tworzona jest lista w konstruktorze klasy Mieszkanie
bloki.get(0).mieszkanie.get(0).lokator.add(new Lokator());
bloki.get(0).mieszkanie.get(0).lokator.get(0).imie="Hieronim";
bloki.get(0).mieszkanie.get(0).lokator.get(0).nazwisko="Kopytko";
bloki.get(0).mieszkanie.get(0).lokator.add(new Lokator());
bloki.get(0).mieszkanie.get(0).lokator.get(1).imie="Rzepicha";
bloki.get(0).mieszkanie.get(0).lokator.get(1).nazwisko="Kopytko";
bloki.get(0).mieszkanie.add(new Mieszkanie());
bloki.get(0).mieszkanie.get(1).pietro=1;
bloki.get(0).mieszkanie.get(1).numerMieszkania=11;
bloki.get(0).mieszkanie.get(1).powierzchnia=55.5;
// bloki.get(0).mieszkanie.get(1).lokator=new ArrayList<Lokator>(); <-- zamiast tego tworzona jest lista w konstruktorze klasy Mieszkanie
bloki.get(0).mieszkanie.get(1).lokator.add(new Lokator());
bloki.get(0).mieszkanie.get(1).lokator.get(0).imie="Bonifacy";
bloki.get(0).mieszkanie.get(1).lokator.get(0).nazwisko="Osiołek";
bloki.get(0).mieszkanie.get(1).lokator.add(new Lokator());
bloki.get(0).mieszkanie.get(1).lokator.get(1).imie="Kunegunda";
bloki.get(0).mieszkanie.get(1).lokator.get(1).nazwisko="Osiołek";
System.out.println(bloki.get(0).toString());
System.out.println(bloki.get(0).mieszkanie.get(0).toString()+"Lokatorzy mieszkania to "
+bloki.get(0).mieszkanie.get(0).lokator.get(0).toString()+" oraz "+bloki.get(0).mieszkanie.get(0).lokator.get(1).toString()+".");
System.out.println(bloki.get(0).mieszkanie.get(1).toString()+"Lokatorzy mieszkania to "
+bloki.get(0).mieszkanie.get(1).lokator.get(0).toString()+" oraz "+bloki.get(0).mieszkanie.get(1).lokator.get(1).toString()+".");
}
public static void main(String[] args)
{
Osiedle os = new Osiedle();
os.start();
}
}
class Blok
{
public int numerBloku;
public int liczbaKlatek;
public int liczbaMieszkan;
public List<Mieszkanie> mieszkanie;
public Blok()
{
mieszkanie = new ArrayList<Mieszkanie>();
}
public String toString()
{
return "Blok nr "+numerBloku+" ma "+liczbaKlatek+" klatek i "+liczbaMieszkan+" mieszkań. ";
}
}
class Mieszkanie
{
public int pietro;
public int numerMieszkania;
public double powierzchnia;
public List<Lokator> lokator;
public Mieszkanie()
{
lokator = new ArrayList<Lokator>();
}
public String toString()
{
return "Mieszkanie nr "+numerMieszkania+" ma powierzchnię "+powierzchnia+"m2 i znajduje się na "+pietro+" piętrze. ";
}
}
class Lokator
{
public String imie;
public String nazwisko;
public String toString()
{
return imie+" "+nazwisko;
}
/*
Wynik działania programu:
Blok nr 1 ma 5 klatek i 12 mieszkań.
Mieszkanie nr 10 ma powierzchnię 60.5m2 i znajduje się na 1 piętrze. Lokatorzy mieszkania to Hieronim Kopytko oraz Rzepicha Kopytko.
Mieszkanie nr 11 ma powierzchnię 55.5m2 i znajduje się na 1 piętrze. Lokatorzy mieszkania to Bonifacy Osiołek oraz Kunegunda Osiołek.
*/
}