— Здравей, Амиго.

— Хей, Риши.

„Ели ми каза, че искаш още примери за колекции. Ще ти дам няколко. Ето списък с колекции и интерфейси:“

Интерфейс Клас/внедряване Описание
списък  ArrayList  списък
 LinkedList  списък
 вектор  вектор
 Стек  Стек
 Комплект    HashSet  Комплект
 TreeSet  Комплект
 СортиранНабор  Сортиран комплект
Карта  HashMap Карта/речник
 TreeMap  Карта/речник
 Сортирана карта  Сортиран речник
 Хеш table  Хеш-table

"Хм. Това е доста. Четири списъка, три комплекта и четири карти."

„Да, всички те са различни реализации на интерфейсите List, Set и Map.“

"Каква е разликата между тези реализации?"

"Точно за това ще говорим днес. Само имайте търпение."

— Имате ли други въпроси?

"Знам How да покажа списък на екрана. Как да покажа набор or карта?"

„Елементите на списъка имат определен ред, така че можете просто да използвате индекс, за да ги покажете. За набор or карта няма конкретен ред. Всъщност редът на техните елементи може да се промени, когато елементите се изтриват or се създават се добавят елементи."

"Невероятно."

„Ето защо бяха измислени специални обекти, наречени итератори, за работа с елементи на колекция. Те ви позволяват да преминете през всички елементи в колекция, дори ако имат само имена instead of индекси (Карта), or нито имена, нито индекси ( Комплект)."

"Ето няколко примера:"

Показване на елементи от набор
public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

     // Get an iterator for the set
     Iterator<String> 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);
    }
}
Показване на елементи от списък
public static void main(String[] args)
{
    List<String> list = new ArrayList<String>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

    Iterator<String> 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);
    }
}
Показване на елементи от карта
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);
    }
}

"Уау. Чудя се Howво означава всичко това."

„Всъщност е доста просто. Първо, получаваме специален обект, итератор, от колекцията. Итераторът има само два метода.

1. Методът next() връща следващия елемент в колекцията.

2. Методът hasNext() проверява дали все още има елементи, които не са бor върнати от next()."

"Добре. Мисля, че вече става по-ясно. Нека се опитам да ви повторя това, което разбрах."

„И така... Първо, трябва да извикаме метода iterator() на колекция, за да получим този магически итератор обект.“

„След това получаваме елементи един по един, стига да има останали за получаване. Получаваме следващия елемент в колекцията, като извикваме next(), и проверяваме дали все още има елементи в колекцията, като извикваме hasNext() на итератор. Това правилно ли е?"

"Да, горе-долу. Но изчакайте добрата част."

"Java има съкратена нотация за работа с итератори. Следвайки модела на while и for , беше добавен още един специален оператор: за всеки . Той също така се посочва с помощта на ключовата дума for ."

"Инструкцията for-each се използва само за работа с колекции и контейнери. Той използва итератор имплицитно, но ние виждаме само върнатия елемент."

„Позволете ми да ви покажа дълъг и стенографски начин за работа с итератор:“

Дълга ръка
public static void main(String[] args)
{
  Set<String> set = new HashSet<String>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    Iterator<String> iterator = set.iterator();
  while (iterator.hasNext())
  {
    String text = iterator.next();
    System.out.println(text);
  }
}
Стенография
public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

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

"Обърнете внимание, че думите, подчертани в червено or зелено, липсват в дясната част. Всъщност три реда са заменени с един:"

Дълга ръка
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
    String text = iterator.next();
Стенография
for (String text : set)

„Това изглежда прекрасно. Така ми харесва много повече.“

„Нека да разгледаме съкратената version на примерите по-горе:“

Показване на елементи от набор
public static void main(String[] args)
{
    Set<String> set = new HashSet<String>();
    set.add("Rain");
    set.add("In");
    set.add("Spain");

    for (String text : set)
    {
        System.out.println(text);
    }
}
Показване на елементи от списък
public static void main(String[] args)
{
    List<String> list = new ArrayList<String>();
    list.add("Rain");
    list.add("In");
    list.add("Spain");

     for (String text : list)
    {
        System.out.println(text);
    }
}
Показване на елементи от карта
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);
    }
}

— Сега говориш!

"Радвам се, че ти харесва."