Kollekciók – TreeMap

package kollekciok.treemap;
import java.util.TreeMap;

//Az Ember osztály
class Ember {
    int id;
    String nev, szulHely;
    int szulEv;
    // Az Ember osztály alapértelmezett konstruktorának felülírása
    public Ember(int id, String nev, String szulHely, int szulEv) {
        this.id = id;
        this.nev = nev;
        this.szulHely = szulHely;
        this.szulEv = szulEv;
    }
    
    @Override //Az Ember osztály alapértelmezett toString() mettódusának felülírása
    public String toString() { 
        return id + ", " + nev + ", " + szulHely + ", " + szulEv; 
    } 
}

public class KollekciokTreeMap {
    public static void main(String[] args) {
/* NEM sorrendtartó, NEM ismétlődhetnek benne az elemek.
   Viszont RENDEZETT és használ KULCSOT!!! */        
        TreeMap<Integer, Ember> tm = new TreeMap();
        Ember ember1 = new Ember(1, "Kis Kövecs", "Debrecen", 1978);
        Ember ember2 = new Ember(3, "Nagy Nepomuk", "Budapest", 1973);
        Ember ember3 = new Ember(18, "Horváth Hamilkár", "Nyíregyháza", 1989);
        Ember ember4 = new Ember(21, "Szabó Szeverián", "Nyíregyháza", 1990);
        Ember ember5 = new Ember(104, "Kovács Kerubin", "Budapest", 2002);
        tm.put(8, ember1);
        tm.put(32, ember2);
        tm.put(71, ember3);
        tm.put(5, ember4);
        tm.put(3, ember5);
        
        System.out.println(tm);
        
        System.out.println("Az első kulcs a TreeMap-ben: " + tm.firstKey());
        System.out.println("Az első kulcs-érték pár a TreeMap-ben: " + tm.firstEntry());
        
// A 3-as kulcsú érték felülírása
        tm.put(3, new Ember(121, "Lakatos Lizander", "Nyíregyháza", 2013));
        System.out.println(tm);
        
/* Szabó Szeverián születési helyének és születési évének kiíratása.
Ehhez be kell járni a TreeMap-et, s az értékek között - amik most az Ember
osztály egy-egy példányai - kell keresni. */
        for(Ember e : tm.values()){
            if(e.nev.equals("Szabó Szeverián")){
                System.out.println(e.szulHely + ", " + e.szulEv);
            }  
        }
        
        
        /* Lambda kifejezések: 
        (paraméter1, paraméter2) -> utasítás, vagy utasítás blokk 
        Az utasítás blokk esetén a kapcsos zárójeleket kell használni! */
        tm.forEach((kulcs, ertek) -> System.out.println("kulcs: " + kulcs + ", ertek: " + ertek));
        
    }
}