– 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);
    }
}
 
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."