Map a ArrayList problém – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Map a ArrayList problém – Java – Fórum – Programujte.comMap a ArrayList problém – Java – Fórum – Programujte.com

 

Martin Štraus
~ Anonymní uživatel
3 příspěvky
19. 11. 2012   #1
-
0
-

 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;
    }
Nahlásit jako SPAM
IP: 147.33.10.–
sleepy0
Stálý člen
19. 11. 2012   #2
-
0
-

Ahoj, mozno sa blbo opytam, ale neda mi to, co ti nefunguje, resp. co chces od kodu aby robil a nerobi to?

Nahlásit jako SPAM
IP: 158.195.195.–
Martin Štraus
~ Anonymní uživatel
3 příspěvky
19. 11. 2012   #3
-
0
-

#2 sleepy
Mám za úkol --> Obsah batohu se bude zobrazovat pomocí obrázků na panelu, při změně obsahu batohu se provede aktualizace obrázků, v řešení bude využit návrhový vzor Observer.

Nefunguje mi to, že ikdyž jsou věci v Batohu, tak je Observer vůbec nevidí a tudíž je nikde nezobrazuje

Nahlásit jako SPAM
IP: 147.33.10.–
Dano
~ Anonymní uživatel
101 příspěvků
19. 11. 2012   #4
-
0
-

#1 Martin Štraus
Tak si dopln iba metodku, ktora vrati to co ostatnym ;) 

/**
 * Vrati veci z batoha ako zoznam
 * 
 * @return 
 */
public List<Vec> getVeci() {
    List<Vec> veci = new ArrayList<Vec>();
    if (seznamVeci != null && !seznamVeci.isEmpty()) {
        veci.addAll(seznamVeci.values());
    }

    return veci;
}
Nahlásit jako SPAM
IP: 78.98.66.–
Martin Štraus
~ Anonymní uživatel
3 příspěvky
19. 11. 2012   #5
-
0
-

#4 Dano
Díky za pomoc, jen mi to teď zase hodilo chybu v paneluBatohu:/

String veci na 8.řádku, incompatible types:/ nevěděl bys, jak to upravit?

 /**
     * Metoda, ve které proběhne aktualizace pozorovatele.
     *
     * @param aktualniVeci logika
     */
    public void aktualizuj(Batoh aktualniVeci) {
        this.removeAll();
         String veci = aktualniVeci.getVeci();
        oddeleneVeci = veci.split("  ");

        URL umisteniObrazku;
        for (int i = 1; i < oddeleneVeci.length; i++) {
            umisteniObrazku = this.getClass().getResource("/zdroje/" + oddeleneVeci[i] + ".jpg");
            if (umisteniObrazku == null) {
                JOptionPane.showMessageDialog(null,
                        "Soubor s obrázkem nebyl nalezen.",
                        "Chyba při načítání obrázku", JOptionPane.ERROR_MESSAGE);
            } else {
                logoIcon = new ImageIcon(umisteniObrazku);
                JLabel obrazek = new JLabel(logoIcon);
                this.add(obrazek);
            }
            this.repaint();
		this.revalidate();
        }
    }
Nahlásit jako SPAM
IP: 147.33.10.–
Dano
~ Anonymní uživatel
101 příspěvků
20. 11. 2012   #6
-
0
-

#5 Martin Štraus
Ak si implementoval metodku getVeci() v duchu, ako som Ti naznacil, tak Ti nevracia String ale List<Vec>.

Nahlásit jako SPAM
IP: 195.28.127.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

Podobná vlákna

ArrayList — založil Andre

ArrayList - výpis — založil honza

JAVA Gui ArrayList — založil Šulin Hrozný

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý