Új hozzászólás Aktív témák

  • Lacces

    őstag

    Sziasztok!

    Adott volt ez a TreeMap
    private Map<Sör, Integer> sörök = new TreeMap<Sör, Integer>();

    És csak eme 3 névteret lehetett használni:
    import java.util.Map;
    import java.util.Set;
    import java.util.TreeMap;

    És kellett hozzá írni egy feltöltő metódust. Nézegettem a neten és az alábbi 2 megoldást találtam. Én az előbbit csináltam meg, ami hosszabb a másiknál.

    A kód nem fordul le, mert a Java fordító kérte, hogy Compare interfészt is valósítsak meg a Sör osztályra, mert a Treemap Key-je egy BST-ben van rendezve. Ugyanezt a metódikát követve C#-ban összejött.

    Kérdésem az lenne, hogy melyiket érdemes használni a kettő közül? És miért?
    (Ilyen ForEach-es bejárás esetén, külön-külön találtam őket, és mindkettő jónak tűnik, elméletben)

    Map.Entry<Key, Value> VS. KeySet() - érdekel melyiket érdemesebb használni :R

    De ha van más ötlet is, akkor azt is szívesen fogadok, tanulni, fejlődni is akarok suli mellett. De én magamtól e 2 megoldásra jutottam

    Én így írtam meg.
    public void feltölt(Sör sör, int dl) {
    int d = 0;
    Sör s = null;
    for (Map.Entry<Sör, Integer> item : sörök.entrySet()) {
    if (item.getKey().equals(sör)) {
    d = item.getValue();
    s = item.getKey();
    }
    }
    if (s != null) {
    sörök.put(s, d + dl);
    }
    else{
    sörök.put(sör, dl);
    }
    }

    Másik rövidebb verzió:

    public void feltölt(Sör sör, int dl) {
    int dec;
    for (Sör s : sörök.keySet())
    if (s.equals(sör)){
    dec = sörök.get(s);
    sörök.put(s,dec + dl);
    return;
    }
    sörök.put(sör, dl);
    }

Új hozzászólás Aktív témák

Hirdetés