2016-02-17 6 views
0

У меня есть массив, который хочет, чтобы итератор указывал на начало набора. Не знаю, как это реализовать, ниже - то, что у меня есть.Использование итератора на ArraySet

public ArraySet() { 
    // INSERT YOUR CODE HERE 
    collection = new Object[INITIAL_CAPACITY]; 
    capacity = 0; 
} 

/** 
* Returns an iterator for this set of objects. 
* @pre true 
* @post Set is not changed 
* @return An iterator for the set of objects that points to the     beginning 
*   of the set. 
*/ 

public SetIterator iterator() { 

    ArraySet testArraySet = new ArraySet(); 
    SetIterator arraySetIterator = testArraySet.iterator(); 
    while (arraySetIterator.hasNext()) 
    { 
    Object element = arraySetIterator.next();   
    return element;  
    } 
    return null; 
} 
+0

Это не так, как работает «итератор» (вы использовали 'next' в методе' iterator() '). Кроме того, это пустой 'Set', который вы выполняете. Наконец, вы можете просто «вернуть testArraySet.iterator();» (но, как я уже упоминал, он пуст). –

+0

Вы вызываете 'ArraySet.iterator()' из 'ArraySet.iterator()'. Это не полезно. Вам нужно создать новый класс, который фактически реализует интерфейс 'SetIterator', хотя он может быть внутренним классом' ArraySet'. –

+0

Итак, у меня будет собственный класс Set Iterator. – TOD

ответ

0

То, что я думаю, что вы собираетесь, чтобы иметь ArraySet реализовать интерфейс Set<E>. Это заставит вас реализовать различные методы, включая метод iterator(). Вам также придется создать свой собственный класс, который реализует Iterator<E>. Это то, что будет возвращено методом ArraySet.iterator().

Чтобы сделать вещи немного более конкретными ниже, это небольшой фрагмент кода структуры, которую я описал.

public class ArraySet<E> implements Set<E>{ 

    /* 
    requrired methods here 
    */ 
    Iterator<E> iterator() 
    { 
     return new MyIterator<E>(this); 
    } 

    private class MyIterator<E> implements Iterator<E>{ 
     /* 
     requrired methods here 
     */ 
    } 
} 

следующие ссылки для получения дополнительной информации о Java Sets и Iterators. Если это все еще вас смущает, я предлагаю посмотреть на how other iterators are used first.

Смежные вопросы