package ru.job4j.set;

import java.util.Arrays;
import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * Класс для описания множества.
 * @author vkovrov
 * @version 0.1
 * @since 0.1
 * @param <E> тип хранимых в контейнере объектов.
 */
public class SimpleSet<E> implements Iterator<E> {

    /**
     * Поле для массива.
     */
    private Object[] container;

    /**
     * Указатель на следующую свободную ячейку.
     */
    private int pointer = 0;

    /**
     * Поле для индекса итератора.
     */
    private int index = 0;

    /**
     * Конструктор класса.
     */
    public SimpleSet() {
        this.container = new Object[10];
    }

    /**
     * Конструктор класса.
     * @param size размер контейнера.
     */
    public SimpleSet(int size) {
        this.container = new Object[size];
    }

    /**
     * Метод для добавления элемента в контейнер.
     * @param e элемент.
     */
    public void add(E e) {
        boolean arrayContainsE = false;
        for (int i = 0; i < pointer; i++) {
            if (e.equals((E) container[i])) {
                arrayContainsE = true;
                break;
            }
        }
        if (!arrayContainsE) {
            if (pointer >= container.length) {
                container = Arrays.copyOf(container, container.length * 2);
            }
            container[pointer++] = e;
        }
    }

    /**
     * Метод для определения наличия следующего элемента в множестве.
     * @return есть ли следующий элемент в множестве.
     */
    @Override
    public boolean hasNext() {
        return index < pointer;
    }

    /**
     * Метод для возвращения следующего элемента множества.
     * @return следующий элемент множества.
     */
    @Override
    public E next() {
        if (!hasNext()) {
            index = 0;
            throw new NoSuchElementException();
        }
        return (E) container[index++];
    }
}

@@ -959,129 +959,154 @@
     
-boolean arrayContainsE = false;%0A        for (int i = 0; i %3C pointer; i++) %7B%0A            if (e.equals((E) container%5Bi%5D)) %7B
+if (!hasDuplicate(e)) %7B%0A            if (pointer %3E= container.length) %7B%0A                container = Arrays.copyOf(container, container.length * 2);
 %0A   
@@ -1118,32 +1118,45 @@
     
+%7D%0A
     
-arrayContainsE = tru
+        container%5Bpointer++%5D = 
 e;%0A 
@@ -1166,46 +1166,196 @@
     
+%7D%0A
     
+%7D%0A%0A
     
-break;%0A            %7D%0A        %7D
+/**%0A     * %D0%9C%D0%B5%D1%82%D0%BE%D0%B4 %D0%B4%D0%BB%D1%8F %D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0 %D0%B4%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%82%D0%B0 %D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0 %D0%B2 %D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5.%0A     * @param e %D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82.%0A     * @return %D0%B5%D1%81%D1%82%D1%8C %D0%BB%D0%B8 %D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82 %D0%B2 %D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B5.%0A     */%0A    public boolean hasDuplicate(E e) %7B
 %0A   
@@ -1359,21 +1359,24 @@
         
-if (!
+boolean 
 arrayCon
@@ -1385,38 +1385,90 @@
 insE
-) %7B%0A            if (pointer %3E=
+ = false;%0A        for (int i = 0; i %3C pointer; i++) %7B%0A            if (e.equals((E)
  con
@@ -1465,39 +1465,36 @@
 ls((E) container
-.length
+%5Bi%5D)
 ) %7B%0A            
@@ -1501,68 +1501,34 @@
     
-container = Arrays.copyOf(container, container.length * 2);%0A
+arrayContainsE = true;%0A   
     
@@ -1527,33 +1527,39 @@
 %0A               
-%7D
+ break;
 %0A            con
@@ -1559,43 +1559,50 @@
     
-container%5Bpointer++%5D = e;%0A        %7D
+%7D%0A        %7D%0A        return arrayContainsE;
 %0A   

fix task - 1. Реализовать коллекцию Set на массиве [#996]