– Szia Amigo.

– Szia Rishi.

"Ellie azt mondta, hogy több példát szeretne a gyűjteményekről. Mondok néhányat. Itt van a gyűjtemények és felületek listája:

Felület Osztály/megvalósítás Leírás
Lista  Tömb lista  Lista
 LinkedList  Lista
 Vektor  Vektor
 Kazal  Kazal
 Készlet    HashSet  Készlet
 TreeSet  Készlet
 SortedSet  Rendezett készlet
Térkép  HashMap Térkép/szótár
 TreeMap  Térkép/szótár
 Rendezett térkép  Rendezett szótár
 Hashtable  Hash-tábla

"Hmm. Ez elég sok. Négy lista, három készlet és négy térkép."

"Igen, ezek mind a List, Set és Map interfészek különböző megvalósításai."

"Mi a különbség ezek között a megvalósítások között?"

– Pontosan erről fogunk ma beszélni. Csak légy türelmes.

– Van még kérdése?

" Tudom, hogyan kell megjeleníteni egy listát a képernyőn. Hogyan jeleníthetek meg egy készletet vagy térképet?"

"A lista elemeinek beállított sorrendje van, így csak egy index segítségével jelenítheti meg őket. A készlet vagy a térkép esetében nincs meghatározott sorrend. Valójában az elemek sorrendje változhat, ahogy az elemek törlődnek vagy újak lesznek. tételek hozzáadva."

"Elképesztő."

"Ezért találták ki a speciális objektumokat, az úgynevezett iterátorokat , hogy a gyűjteményelemekkel dolgozzanak. Lehetővé teszik a gyűjtemény összes elemének végigfutását, még akkor is, ha indexek helyett csak nevek vannak (Térkép), vagy sem nevek, sem indexek ( Készlet)."

"Íme néhány példa:"

Egy készlet elemeinek megjelenítése
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

     // Get an iterator for the set
     Iterator&ltString> iterator = set.iterator();

    while (iterator.hasNext())        // Check if there is another element
    {
       // Get the current element and move to the next one
       String text = iterator.next();

        System.out.println(text);
    }
}
2
Feladat
Java Syntax,  szintlecke
Zárt
Code entry
Sometimes you don't need to think, you just need to hammer it out! As paradoxical as it may seem, sometimes your fingers will "remember" better than your conscious mind. That's why while training at the secret CodeGym center you will sometimes encounter tasks that require you to enter code. By entering code, you get used to the syntax and earn a little dark matter. What's more, you combat laziness.
Lista elemeinek megjelenítése
public static void main(String[] args)
{
    List&ltString> list = new ArrayList&ltString>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

    Iterator&ltString> iterator = list.iterator();// Get an iterator for the list

    while (iterator.hasNext())      // Check if there is another element
    {
        // Get the current element and move to the next one
        String text = iterator.next();

        System.out.println(text);
    }
}
Térkép elemeinek megjelenítése
public static void main(String[] args)
{
    // All elements are stored in pairs
    Map<String, String> map = new HashMap<String, String>();
    map.put("first", "Rain");
    map.put("second", "In");
    map.put("third", "Spain");

    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

   while (iterator.hasNext())
    {
        // Get a key-value pair
        Map.Entry<String, String> pair = iterator.next();
        String key = pair.getKey();            // Key
        String value = pair.getValue();        // Value
        System.out.println(key + ":" + value);
    }
}

"Wow. Kíváncsi vagyok, mit jelent ez az egész."

"Valójában nagyon egyszerű. Először is kapunk egy speciális objektumot, egy iterátort a gyűjteményből. Az iterátornak csak két módszere van.

1. A next() metódus a gyűjtemény következő elemét adja vissza.

2. A hasNext() metódus ellenőrzi, hogy vannak-e még olyan elemek, amelyeket a next() nem adott vissza."

"Rendben. Azt hiszem, most már világosabb. Hadd próbáljam meg ismételni, amit megértettem."

"Szóval... Először is meg kell hívnunk az iterator() metódust egy gyűjteményben, hogy megkapjuk ezt a varázslatos iterátor objektumot."

"Ezután egyenként kapjuk meg az elemeket, ameddig van még beszerezni. A next() meghívásával megkapjuk a gyűjtemény következő elemét, és a hasNext() meghívásával ellenőrizzük, hogy vannak-e még elemek a gyűjteményben. iterátor. Helyes?"

– Igen, többé-kevésbé. De várd meg a jó részt.

"A Java-nak van gyorsított jelölése az iterátorokkal való munkavégzéshez. A while és a for mintáját követve egy további speciális utasítás került hozzáadásra: mindegyikhez . A for kulcsszó használatával is jelezzük ."

"A for-each utasítás csak gyűjteményekkel és tárolókkal való munkához használható. Implicit módon iterátort használ, de csak a visszaadott elemet látjuk."

"Hadd mutassam meg az iterátorral való munka hosszú és gyorsírási módjait:"

Folyóírás
public static void main(String[] args)
{
  Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    Iterator&ltString> iterator = set.iterator();
  while (iterator.hasNext())
  {
    String text = iterator.next();
    System.out.println(text);
  }
}
Gyorsírás
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

   for (String text : set)
    {
        System.out.println(text);
    }
}

"Ne feledje, hogy a piros vagy zöld színnel kiemelt szavak hiányoznak a jobb oldali részből. Valójában három sor helyére egy kerül:"

Folyóírás
Iterator&ltString> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
Gyorsírás
for (String text : set)

"Ez pompásan néz ki. Sokkal jobban szeretem így."

"Nézzük meg a fenti példák rövidített változatát:"

Egy készlet elemeinek megjelenítése
public static void main(String[] args)
{
    Set&ltString> set = new HashSet&ltString>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    for (String text : set)
    {
        System.out.println(text);
    }
}
Lista elemeinek megjelenítése
public static void main(String[] args)
{
    List&ltString> list = new ArrayList&ltString>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

     for (String text : list)
    {
        System.out.println(text);
    }
}
Térkép elemeinek megjelenítése
public static void main(String[] args)
{
    Map<String, String> map = new HashMap<String, String>();
    map.put("first", "Rain");
    map.put("second", "In");
    map.put("third", "Spain");

    for (Map.Entry<String, String> pair : map.entrySet())
    {
        String key = pair.getKey();                      // Key
        String value = pair.getValue();                  // Value
        System.out.println(key + ":" + value);
    }
}

– Most te beszélsz!

"Örülök, hogy tetszett."