"Hei, Amigo."

"Hei, Rishi."

"Ellie fortalte meg at du ville ha flere eksempler på samlinger. Jeg skal gi deg noen. Her er en liste over samlinger og grensesnitt:"

Grensesnitt Klasse/gjennomføring Beskrivelse
Liste  ArrayList  Liste
 LinkedList  Liste
 Vektor  Vektor
 Stable  Stable
 Sett    HashSet  Sett
 Tresett  Sett
 SortertSett  Sortert sett
Kart  HashMap Kart/ordbok
 Trekart  Kart/ordbok
 Sortert kart  Sortert ordbok
 Hastbar  Hash-tabell

"Hmm. Det er ganske mye. Fire lister, tre sett og fire kart."

"Ja, de er alle forskjellige implementeringer av grensesnittene List, Set og Map."

"Hva er forskjellen mellom disse implementeringene?"

"Det er akkurat det vi skal snakke om i dag. Bare vær tålmodig."

"Har du andre spørsmål?"

"Jeg vet hvordan jeg viser en liste på skjermen. Hvordan viser jeg et sett eller kart?"

"Elementene i en liste har en fast rekkefølge, så du kan bare bruke en indeks for å vise dem. For et sett eller kart er det ingen spesifikk rekkefølge. Faktisk kan rekkefølgen på elementene endres etter hvert som elementer slettes eller nye elementer legges til."

"Fantastisk."

"Dette er grunnen til at spesielle objekter, kalt iteratorer , ble oppfunnet for å jobbe med samlingselementer. De lar deg gå gjennom alle elementene i en samling, selv om de bare har navn i stedet for indekser (Kart), eller verken navn eller indekser ( Sett)."

"Her er noen eksempler:"

Vis elementer av et sett
 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);
    }
}
 
Vis elementer i en liste
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);
    }
}
Vis elementer av et kart
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. Jeg lurer på hva alt det betyr."

"Det er faktisk ganske enkelt. Først får vi et spesielt objekt, en iterator, fra samlingen. Iteratoren har bare to metoder.

1. Next()-metoden returnerer det neste elementet i samlingen.

2. HasNext()-metoden sjekker om det fortsatt er elementer som ikke har blitt returnert av next()."

"OK. Jeg tror det blir klarere nå. La meg prøve å gjenta det jeg forsto."

"Så... Først må vi kalle iterator()-metoden på en samling for å få dette magiske iteratorobjektet."

"Så får vi elementer ett og ett så lenge det er noen igjen å hente. Vi får det neste elementet i samlingen ved å kalle next(), og vi sjekker om det fortsatt er elementer i samlingen ved å kalle hasNext() på iterator. Er det riktig?"

"Ja, mer eller mindre. Men vent på den gode delen."

"Java har stenografi for å arbeide med iteratorer. Etter mønsteret for while og for , er det lagt til en spesiell setning til: for hver . Den er også indikert med nøkkelordet for ."

"For-each-setningen brukes bare for å jobbe med samlinger og beholdere. Den bruker en iterator implisitt, men vi ser bare det returnerte elementet."

"La meg vise deg longhand- og stenografimåtene å jobbe med en iterator på:"

Langhånd
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);
  }
}
Stenografi
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);
    }
}


"Merk at ordene uthevet i rødt eller grønt er fraværende i høyre del. Faktisk er tre linjer erstattet med en:"

Langhånd
Iterator&ltString> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
Stenografi

for (String text : set)


"Dette ser nydelig ut. Jeg liker det mye bedre på denne måten."

"La oss se på stenografien av eksemplene ovenfor:"

Vis elementer av et sett
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);
    }
}
Vis elementer i en liste
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);
    }
}
Vis elementer av et kart
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);
    }
}

"Nå snakker du!"

"Jeg er glad du likte det."