Note that there are some explanatory texts on larger screens.

plurals
  1. POFor each with my custom class won't work
    text
    copied!<p>Hey everybody I'm working with Java.<br> So I am writing a class called <strong>OrderedSet</strong>. It is a class that is cross between a set and a queue. In other words, it is a queue without any duplicates. So I know I have to implement the <em>Iterable</em> interface, and write an iterator method. To write the method I have to then implement the <em>Iterator</em> interface.</p> <pre><code>package comp345; import java.util.Iterator; import java.util.NoSuchElementException; class OrderedSet implements Iterable&lt;Object&gt; { private Object[] queue; // This is how the OrderedSet is represented, a // queue of Objects private int counter; // Counter to keep track of current position of queue private int queueSize; // Keep track of the queue; // Constructor public OrderedSet(int size) { this.queue = new Object[size]; this.counter = 0; this.queueSize = size - 1; // Instantiate each instance of the object in the object array for (int i = 0; i &lt; queue.length; i++) { queue[i] = new Object(); } } /** * Ensures that this collection contains the specified element. If it is not * already in the collection it is added it to the back of the queue. * * @param e * element whose presence in this collection is to be ensured * @return true if this collection changed as a result of the call * @throws NullPointerException * if the specified element is null */ boolean add(Object i) { if (i == queue[counter]) { return false; } else if (i == null) throw new NullPointerException(); else { // Add Object to back of Queue queue[counter] = i; return true; } } /** * Removes all of the elements from this collection. The collection will be * empty after this method returns. */ void clear() { for (int i = 0; i &lt; queue.length; i++) { queue[i] = null; } } /** * Returns true if this collection contains no elements. * * @return true if this collection contains no elements */ boolean isEmpty() { if (queue[0] == null) return true; else return false; } /** * Retrieves, but does not remove, the head of this queue, or returns null * if this queue is empty * * @return the head of this queue, or null if this queue is empty */ Object peek() { if (queue[counter] != null) return queue[counter]; else return null; } /** * Retrieves and removes the head of the queue. * * @return the head of this queue * @throws NoSuchElementException * if this queue is empty */ Object remove() { if (queue[0] != null) { Object temp = queue[0]; queue[0] = queue[1]; return temp; } else throw new NoSuchElementException(); } public class SetIterator implements Iterator&lt;Object&gt; { private int counter; public SetIterator() { this.counter = 0; } @Override public Object next() { counter++; if (queueSize == counter) return null; else if (queue[counter] != null) return (Object) queue[counter]; else throw new NoSuchElementException(); } @Override public boolean hasNext() { counter++; if (queueSize &lt; counter) return false; else if (queue[counter] != null) return true; return false; } @Override public void remove() { throw new UnsupportedOperationException(); } } @Override public Iterator&lt;Object&gt; iterator() { return new SetIterator(); } public static void main(String args[]) { OrderedSet os; os.add("hello"); os.add(4); os.add("bye"); for (Object o : os) { System.out.println(o); } } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload