Array with Iterator Java style Implement an array data struc

Array with Iterator. Java style

Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code works:

The iterator provided by this class follows the behaviour of typical Java style (Jsty). If the underlying collection is modified, the iterator becomes invalid and an exception is raised.

An example of code that may generate an exception is below:

There are 4 necessary methods for the Array. get(), set(), remove() and iterator().

There are 2 necessary methods for Iterator. hasNext() and next().

Other than these, you need to create more methods for communicating between Array and the Iterator. Object references are very useful in this scenario.

Once you have an iterator going. There is the next step of handling multiple iterators for the same data structure. More than one iterator can exist, at different times. There are iterators which are

are invalid and have raised an exception, or

are invalid and have not yet raised an exception, or

are valid, they were created after modification to the data structure.

Multiple iterators are one of the harder tests

Please complete the following two classes below:

***************************************************************************************************

//JstyArray.java:

/*
* An array that implements the Iterable interface.
* Returns an iterator that would raise an exception if the array was modified (set or remove)
*
*/

import java.util.LinkedList;

public class JstyArray<E> implements Iterable<E>
{
   // YOUR CODE ANYWHERE IN THIS CLASS

   private E[] array;
   public static final int CAPACITY = 100;
   // there could be more instance variables!


   /* initialise array with capacity. If capacity is less than 1, use CAPACITY.
   */
   public JstyArray(int capacity) {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }

   /* if index is outside range of array. simply return
   */
   public void set(int i, E val) {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }

   /* if index is outside range of array. return null
   */
   public E get(int i) {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }

   /* if index is outside range of array. return null
   */
   public E remove(int i) {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }
          
  
   public JstyIterator<E> iterator() {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }
}

********************************************************************************************************************************

JstyIterator.java:

/*
* An iterator for the class JstyArray. Performs all standard tasks of an iterator.
* Specifically, when calling next() on an invalid iterator, a NoSuchElementException is raised by this class.
*
*/
import java.util.Iterator;
import java.util.NoSuchElementException;

public class JstyIterator<E> implements Iterator<E>
{
   // YOUR CODE ANYWHERE IN THIS CLASS

   public boolean hasNext() {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }

   public E next() throws NoSuchElementException {
       // YOUR CODE ANYWHERE IN THIS CLASS
   }
  
   public void remove() {
       // we need this method for the nagging Java compiler
       // you may leave empty
   }
  
}

Solution

PROGRAM CODE:

JstyArray.java

package array;

import java.util.LinkedList;

public class JstyArray<E> implements Iterable<E>

{

// YOUR CODE ANYWHERE IN THIS CLASS

private E[] array;

public static final int CAPACITY = 100;

public int size;

public int capacity;

public LinkedList<E> list;

// there could be more instance variables!

/* initialise array with capacity. If capacity is less than 1, use CAPACITY.

*/

@SuppressWarnings(\"unchecked\")

   public JstyArray(int capacity) {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(capacity <1)

   {

       array = (E[]) new Object[CAPACITY];

       this.capacity = CAPACITY;

       list = new LinkedList<E>();

       size = 0;

   }

   else

   {

       array = (E[]) new Object[capacity];

       this.capacity = capacity;

       list = new LinkedList<E>();

       size = 0;

   }

}

/* if index is outside range of array. simply return

*/

public void set(int i, E val) {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(i>=capacity)

       return;

   else

   {

       array[i] = val;

       list.add(i, val);

       size++;

   }

}

/* if index is outside range of array. return null

*/

public E get(int i) {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(i>=capacity)

       return null;

   else

       return array[i];

}

/* if index is outside range of array. return null

*/

public E remove(int i) {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(i>=capacity)

       return null;

   else

   {

       list.remove(i);

       E e = array[i];

       array[i] = null;

       return e;

   }

}

  

public JstyIterator<E> iterator() {

// YOUR CODE ANYWHERE IN THIS CLASS

   return new JstyIterator<E>(this);

}

  

  

}

JstyIterator.java

package array;

import java.util.Iterator;

import java.util.NoSuchElementException;

public class JstyIterator<E> implements Iterator<E>

{

   private JstyArray<E> array;

   private int index;

  

   public JstyIterator(JstyArray<E> array) {

       this.array = array;

       index = 0;

   }

  

   // YOUR CODE ANYWHERE IN THIS CLASS

public boolean hasNext() {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(array.size == index)

       return false;

   else return true;

}

public E next() throws NoSuchElementException {

// YOUR CODE ANYWHERE IN THIS CLASS

   if(array.list.size() != array.size)

       throw new NoSuchElementException(\"Array elements have been modified !\");

   else if(hasNext()) {

return array.get(index++);

} else {

throw new NoSuchElementException(\"There are no elements in the array. Size = \" + array.size);

}

}

  

public void remove() {

// we need this method for the nagging Java compiler

// you may leave empty

}

  

}

JstyArrayTester.java

package array;

import java.util.Iterator;

import java.util.NoSuchElementException;

public class JstyArrayTester {

   public static void main(String[] args) {

       JstyArray<Integer> data;

       data = new JstyArray<Integer>(10);

       for (int i = 0; i < 10; ++i) {

          data.set(i, new Integer(i) );

       }

       int sum = 0;

       for (Integer v : data ) {

          if (v == null)

          continue; // empty cell

          sum += v;

       }

      

       System.out.println(\"Sum of Integers: \" + sum);

       System.out.println(\"\ Iterating through the array\ Values: \");

       Iterator<Integer> itr = data.iterator();

       try

       {

           data.remove(0);  //removing here to check for concurrency

           while(itr.hasNext())

               System.out.println(itr.next());

       }catch(NoSuchElementException nsee)

       {

           System.out.println(nsee.getLocalizedMessage());

       }

      

   }

}

OUTPUT:

Sum of Integers: 45

Iterating through the array

Values:

Array elements have been modified !

Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w
Array with Iterator. Java style Implement an array data structure as a class JstyArray<E> to support the Iterable interface such that the following code w

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site