Ahoj, mám následující problém. Dle přednášek jsem upravil třídu batoh, aby fungoval observer, ale bohužel zatímco ostatní měli třídu Batoh vyřešenou např.: private ArrayList<Vec> batoh;, tak já ji mam řešenou pomocí Map a tudíž mi tahle úprava s arraylistem moc nefunguje. Mohl by mi někdo poradit, jak upravit kód, abych nemusel předělávat celou třídu Batoh po vzoru ArrayListu?
Java Code:
package logika;
/* Soubor je ulozen v kodovani UTF-8.
* Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.*;
import logika.Vec;
import util.ObserverZmenyBatohu;
/*******************************************************************************
* Třída batoh pracuje s věcmi v batohu
*
* @author xxxx
* @version 1.00.000
*/
public class Batoh
{
//== Datové atributy (statické i instancí)======================================
private Map<String, Vec> seznamVeci;
private static final int MAX_VECI = 5;
private List<ObserverZmenyBatohu> seznamPozorovatelu;
/**
* Konstruktor třídy
*/
public Batoh()
{
seznamVeci = new HashMap<>();
seznamPozorovatelu = new ArrayList<ObserverZmenyBatohu>();
}
/**
* Metoda přidá věc do batohu pokud je tam ještě místo
*
* @param neco - věc, který se má přidat do batohu
* @return true pokud se podaří věc přidat
*/
public boolean vlozVec(Vec neco)
if (isMisto()){
seznamVeci.put(neco.getNazev(),neco);
this.upozorniPozorovatele();
return true;
}
else {
return false;
}
}
/**
* Metoda odstraní věc z batohu pokud tam je
*
* @param neco - věc kterou chceme odstanit
* @return true pokud se odstraní
*/
public boolean odlozVec(String neco) {
boolean vyhozena = false;
if (seznamVeci.containsKey(neco)) {
vyhozena = true;
seznamVeci.remove(neco);
}
this.upozorniPozorovatele();
return vyhozena;
}