package ru.job4j.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.TreeSet;

/**
 * Class CollectionTest.
 *
 * @author Andrey Lemdyanov {lemdyanov5@mail.ru)
 * @version $Id$
 * @since 0.1
 */
public class CollectionTest {
    /**
     * Поле коллекции.
     */
    Collection<String> collection;

    /**
     * Метод для добавления строк.
     *
     * @param collection коллекция
     * @param line       строка
     * @param amount     число добавлений
     * @return затраченное время
     */
    public long add(Collection<String> collection, String line, int amount) {
        long before = System.currentTimeMillis();
        int i;
        for (i = 0; i < amount; i++) {
            collection.add(line + i);
        }
        this.collection = collection;
        long after = System.currentTimeMillis();
        return after - before;
    }

    /**
     * Метод для удаления n строк из начала коллекции.
     *
     * @param collection коллекция
     * @param amount     число удалений
     * @return затраченное время
     */
    public long delete(Collection<String> collection, int amount) {
        long before = System.currentTimeMillis();
        for (int i = 0; i < amount; i++) {
            collection.remove("Строка" + i);
        }
        long after = System.currentTimeMillis();
        return after - before;
    }

    /**
     * Точка входа.
     *
     * @param args массив строк
     */
    public static void main(String[] args) {
        CollectionTest test = new CollectionTest();
        ArrayList<String> alist = new ArrayList<>();
        long result = test.add(alist, "Строка", 1000000);
        System.out.println(String.format("Время вставки ArrayList : %d ", result));
        long delete = test.delete(alist, 45000);
        System.out.println(String.format("Время удаления ArrayList : %d ", delete));

        CollectionTest test2 = new CollectionTest();
        LinkedList<String> llist = new LinkedList<>();
        result = test2.add(llist, "Строка", 1000000);
        System.out.println(String.format("Время вставки LinkedList : %d", result));
        delete = test2.delete(llist, 45000);
        System.out.println(String.format("Время удаления LinkedList : %d ", delete));

        CollectionTest test3 = new CollectionTest();
        TreeSet<String> tlist = new TreeSet<>();
        result = test3.add(tlist, "Строка", 1000000);
        System.out.println(String.format("Время вставки TreeSet : %d", result));
        delete = test3.delete(tlist, 45000);
        System.out.println(String.format("Время удаления TreeSet : %d ", delete));
    }
}

@@ -44,101 +44,9 @@
 til.
-ArrayList;%0Aimport java.util.Collection;%0Aimport java.util.LinkedList;%0Aimport java.util.TreeSet
+*
 ;%0A%0A/
@@ -1136,24 +1136,89 @@
     
-for (int i = 0; 
+Iterator%3CString%3E iter = collection.iterator();%0A        int i = 0;%0A        while (
 i %3C 
@@ -1215,37 +1215,32 @@
 hile (i %3C amount
-; i++
 ) %7B%0A            
@@ -1243,39 +1243,63 @@
     
-collection.remove(%22%D0%A1%D1%82%D1%80%D0%BE%D0%BA%D0%B0%22 + i)
+iter.next();%0A            iter.remove();%0A            i++
 ;%0A  

task 10022