Question

Java Write an intersection method for the ResizableArrayBag class. The intersection of two bags is the...

Java

Write an intersection method for the ResizableArrayBag class.

The intersection of two bags is the overlapping content of the bags. Intersections are explained in more detail in Chapter 1, #6.

An intersecion might contain duplicates.

The method should not alter either bag. The current bag and the bag sent in as a parameter should be the same when the method ends.

The method header is:

public BagInterface<T> intersection(ResizableArrayBag <T> anotherBag)

Example:

bag1 contains (1, 2, 2, 3)

bag2 contains (2, 2, 2, 4, 5)

then bag1.intersection(bag2) would return a new bag that contains (2, 2)

The contents of bag1 and bag2 would be the same.

(The order of the intersection bag might not match the above, since bags are unordered.)

----------------------

import java.util.Arrays;

public final class ResizableArrayBag<T> implements BagInterface<T> {

   private T[] bag; // Cannot be final due to doubling

   private int numberOfEntries;

   private boolean initialized = false;

   private static final int DEFAULT_CAPACITY = 25; // Initial capacity of bag

   private static final int MAX_CAPACITY = 10000;

   /** Creates an empty bag whose initial capacity is 25. */

   public ResizableArrayBag() {

       this(DEFAULT_CAPACITY);

   } // end default constructor

   /**

   * Creates an empty bag having a given initial capacity.

   *

   * @param initialCapacity

   * The integer capacity desired.

   */

   public ResizableArrayBag(int initialCapacity) {

       checkCapacity(initialCapacity);

       // The cast is safe because the new array contains null entries

       @SuppressWarnings("unchecked")

       T[] tempBag = (T[]) new Object[initialCapacity]; // Unchecked cast

       bag = tempBag;

       numberOfEntries = 0;

       initialized = true;

   } // end constructor

   /**

   * Creates a bag containing given entries.

   *

   * @param contents

   * An array of objects.

   */

   public ResizableArrayBag(T[] contents) {

       checkCapacity(contents.length);

       bag = Arrays.copyOf(contents, contents.length);

       numberOfEntries = contents.length;

       initialized = true;

   } // end constructor

   /**

   * Adds a new entry to this bag.

   *

   * @param newEntry

   * The object to be added as a new entry.

   * @return True.

   */

   public boolean add(T newEntry) {

       checkInitialization();

       if (isArrayFull()) {

           doubleCapacity();

       } // end if

       bag[numberOfEntries] = newEntry;

       numberOfEntries++;

       return true;

   } // end add

   /**

   * Retrieves all entries that are in this bag.

   *

   * @return A newly allocated array of all the entries in this bag.

   */

   public T[] toArray() {

       checkInitialization();

       // The cast is safe because the new array contains null entries.

       @SuppressWarnings("unchecked")

       T[] result = (T[]) new Object[numberOfEntries]; // Unchecked cast

       for (int index = 0; index < numberOfEntries; index++) {

           result[index] = bag[index];

       } // end for

       return result;

   } // end toArray

   /**

   * Sees whether this bag is empty.

   *

   * @return True if this bag is empty, or false if not.

   */

   public boolean isEmpty() {

       return numberOfEntries == 0;

   } // end isEmpty

   /**

   * Gets the current number of entries in this bag.

   *

   * @return The integer number of entries currently in this bag.

   */

   public int getCurrentSize() {

       return numberOfEntries;

   } // end getCurrentSize

   /**

   * Counts the number of times a given entry appears in this bag.

   *

   * @param anEntry

   * The entry to be counted.

   * @return The number of times anEntry appears in this ba.

   */

   public int getFrequencyOf(T anEntry) {

       checkInitialization();

       int counter = 0;

       for (int index = 0; index < numberOfEntries; index++) {

           if (anEntry.equals(bag[index])) {

               counter++;

           } // end if

       } // end for

       return counter;

   } // end getFrequencyOf

   /**

   * Tests whether this bag contains a given entry.

   *

   * @param anEntry

   * The entry to locate.

   * @return True if this bag contains anEntry, or false otherwise.

   */

   public boolean contains(T anEntry) {

       checkInitialization();

       return getIndexOf(anEntry) > -1; // or >= 0

   } // end contains

   /** Removes all entries from this bag. */

   public void clear() {

       while (!isEmpty())

           remove();

   } // end clear

   /**

   * Removes one unspecified entry from this bag, if possible.

   *

   * @return Either the removed entry, if the removal was successful, or null.

   */

   public T remove() {

       checkInitialization();

       T result = removeEntry(numberOfEntries - 1);

       return result;

   } // end remove

   /**

   * Removes one occurrence of a given entry from this bag.

   *

   * @param anEntry

   * The entry to be removed.

   * @return True if the removal was successful, or false if not.

   */

   public boolean remove(T anEntry) {

       checkInitialization();

       int index = getIndexOf(anEntry);

       T result = removeEntry(index);

       return anEntry.equals(result);

   } // end remove

   // Locates a given entry within the array bag.

   // Returns the index of the entry, if located,

   // or -1 otherwise.

   // Precondition: checkInitialization has been called.

   private int getIndexOf(T anEntry) {

       int where = -1;

       boolean found = false;

       int index = 0;

       while (!found && (index < numberOfEntries)) {

           if (anEntry.equals(bag[index])) {

               found = true;

               where = index;

           } // end if

           index++;

       } // end while

       // Assertion: If where > -1, anEntry is in the array bag, and it

       // equals bag[where]; otherwise, anEntry is not in the array.

       return where;

   } // end getIndexOf

   // Removes and returns the entry at a given index within the array.

   // If no such entry exists, returns null.

   // Precondition: 0 <= givenIndex < numberOfEntries.

   // Precondition: checkInitialization has been called.

   private T removeEntry(int givenIndex) {

       T result = null;

       if (!isEmpty() && (givenIndex >= 0)) {

           result = bag[givenIndex]; // Entry to remove

           int lastIndex = numberOfEntries - 1;

           bag[givenIndex] = bag[lastIndex]; // Replace entry to remove with

                                               // last entry

           bag[lastIndex] = null; // Remove reference to last entry

           numberOfEntries--;

       } // end if

       return result;

   } // end removeEntry

   // Returns true if the array bag is full, or false if not.

   private boolean isArrayFull() {

       return numberOfEntries >= bag.length;

   } // end isArrayFull

   // Doubles the size of the array bag.

   // Precondition: checkInitialization has been called.

   private void doubleCapacity() {

       int newLength = 2 * bag.length;

       checkCapacity(newLength);

       bag = Arrays.copyOf(bag, newLength);

   } // end doubleCapacity

   // Throws an exception if the client requests a capacity that is too large.

   private void checkCapacity(int capacity) {

       if (capacity > MAX_CAPACITY)

           throw new IllegalStateException(

                   "Attempt to create a bag whose capacity exceeds "

                           + "allowed maximum of " + MAX_CAPACITY);

   } // end checkCapacity

   // Throws an exception if receiving object is not initialized.

   private void checkInitialization() {

       if (!initialized)

           throw new SecurityException("Uninitialized object used "

                   + "to call an ArrayBag method.");

   } // end checkInitialization

  

} // end ResizableArrayBag

0 0
Add a comment Improve this question Transcribed image text
Answer #1

Please find my implementation.

Please let me know in case of any issue.

import java.util.Arrays;

public final class ResizableArrayBag<T> implements BagInterface<T> {

   private T[] bag; // Cannot be final due to doubling

   private int numberOfEntries;

   private boolean initialized = false;

   private static final int DEFAULT_CAPACITY = 25; // Initial capacity of bag

   private static final int MAX_CAPACITY = 10000;

   /** Creates an empty bag whose initial capacity is 25. */

   public ResizableArrayBag() {

       this(DEFAULT_CAPACITY);

   } // end default constructor

   /**

   * Creates an empty bag having a given initial capacity.

   *

   * @param initialCapacity

   * The integer capacity desired.

   */

   public ResizableArrayBag(int initialCapacity) {

       checkCapacity(initialCapacity);

       // The cast is safe because the new array contains null entries

       @SuppressWarnings("unchecked")

       T[] tempBag = (T[]) new Object[initialCapacity]; // Unchecked cast

       bag = tempBag;

       numberOfEntries = 0;

       initialized = true;

   } // end constructor

   /**

   * Creates a bag containing given entries.

   *

   * @param contents

   * An array of objects.

   */

   public ResizableArrayBag(T[] contents) {

       checkCapacity(contents.length);

       bag = Arrays.copyOf(contents, contents.length);

       numberOfEntries = contents.length;

       initialized = true;

   } // end constructor

   /**

   * Adds a new entry to this bag.

   *

   * @param newEntry

   * The object to be added as a new entry.

   * @return True.

   */

   public boolean add(T newEntry) {

       checkInitialization();

       if (isArrayFull()) {

           doubleCapacity();

       } // end if

       bag[numberOfEntries] = newEntry;

       numberOfEntries++;

       return true;

   } // end add

   /**

   * Retrieves all entries that are in this bag.

   *

   * @return A newly allocated array of all the entries in this bag.

   */

   public T[] toArray() {

       checkInitialization();

       // The cast is safe because the new array contains null entries.

       @SuppressWarnings("unchecked")

       T[] result = (T[]) new Object[numberOfEntries]; // Unchecked cast

       for (int index = 0; index < numberOfEntries; index++) {

           result[index] = bag[index];

       } // end for

       return result;

   } // end toArray

   /**

   * Sees whether this bag is empty.

   *

   * @return True if this bag is empty, or false if not.

   */

   public boolean isEmpty() {

       return numberOfEntries == 0;

   } // end isEmpty

   /**

   * Gets the current number of entries in this bag.

   *

   * @return The integer number of entries currently in this bag.

   */

   public int getCurrentSize() {

       return numberOfEntries;

   } // end getCurrentSize

   /**

   * Counts the number of times a given entry appears in this bag.

   *

   * @param anEntry

   * The entry to be counted.

   * @return The number of times anEntry appears in this ba.

   */

   public int getFrequencyOf(T anEntry) {

       checkInitialization();

       int counter = 0;

       for (int index = 0; index < numberOfEntries; index++) {

           if (anEntry.equals(bag[index])) {

               counter++;

           } // end if

       } // end for

       return counter;

   } // end getFrequencyOf

   /**

   * Tests whether this bag contains a given entry.

   *

   * @param anEntry

   * The entry to locate.

   * @return True if this bag contains anEntry, or false otherwise.

   */

   public boolean contains(T anEntry) {

       checkInitialization();

       return getIndexOf(anEntry) > -1; // or >= 0

   } // end contains

   /** Removes all entries from this bag. */

   public void clear() {

       while (!isEmpty())

           remove();

   } // end clear

   /**

   * Removes one unspecified entry from this bag, if possible.

   *

   * @return Either the removed entry, if the removal was successful, or null.

   */

   public T remove() {

       checkInitialization();

       T result = removeEntry(numberOfEntries - 1);

       return result;

   } // end remove

   /**

   * Removes one occurrence of a given entry from this bag.

   *

   * @param anEntry

   * The entry to be removed.

   * @return True if the removal was successful, or false if not.

   */

   public boolean remove(T anEntry) {

       checkInitialization();

       int index = getIndexOf(anEntry);

       T result = removeEntry(index);

       return anEntry.equals(result);

   } // end remove

   // Locates a given entry within the array bag.

   // Returns the index of the entry, if located,

   // or -1 otherwise.

   // Precondition: checkInitialization has been called.

   private int getIndexOf(T anEntry) {

       int where = -1;

       boolean found = false;

       int index = 0;

       while (!found && (index < numberOfEntries)) {

           if (anEntry.equals(bag[index])) {

               found = true;

               where = index;

           } // end if

           index++;

       } // end while

       // Assertion: If where > -1, anEntry is in the array bag, and it

       // equals bag[where]; otherwise, anEntry is not in the array.

       return where;

   } // end getIndexOf

   // Removes and returns the entry at a given index within the array.

   // If no such entry exists, returns null.

   // Precondition: 0 <= givenIndex < numberOfEntries.

   // Precondition: checkInitialization has been called.

   private T removeEntry(int givenIndex) {

       T result = null;

       if (!isEmpty() && (givenIndex >= 0)) {

           result = bag[givenIndex]; // Entry to remove

           int lastIndex = numberOfEntries - 1;

           bag[givenIndex] = bag[lastIndex]; // Replace entry to remove with

           // last entry

           bag[lastIndex] = null; // Remove reference to last entry

           numberOfEntries--;

       } // end if

       return result;

   } // end removeEntry

   // Returns true if the array bag is full, or false if not.

   private boolean isArrayFull() {

       return numberOfEntries >= bag.length;

   } // end isArrayFull

   // Doubles the size of the array bag.

   // Precondition: checkInitialization has been called.

   private void doubleCapacity() {

       int newLength = 2 * bag.length;

       checkCapacity(newLength);

       bag = Arrays.copyOf(bag, newLength);

   } // end doubleCapacity

   // Throws an exception if the client requests a capacity that is too large.

   private void checkCapacity(int capacity) {

       if (capacity > MAX_CAPACITY)

           throw new IllegalStateException(

                   "Attempt to create a bag whose capacity exceeds "

                           + "allowed maximum of " + MAX_CAPACITY);

   } // end checkCapacity

   // Throws an exception if receiving object is not initialized.

   private void checkInitialization() {

       if (!initialized)

           throw new SecurityException("Uninitialized object used "

                   + "to call an ArrayBag method.");

   } // end checkInitialization

   @Override

   public void display() {

       // TODO Auto-generated method stub

      

   }

   public BagInterface<T> intersection(ResizableArrayBag <T> anotherBag) {

      

       BagInterface<T> I = new ResizableArrayBag<>();

      

       T[] array = this.toArray();

       T[] other = anotherBag.toArray();

      

       boolean status[] = new boolean[other.length];

      

       for(int i=0; i<array.length; i++) {

          

           for(int j=0; j<other.length; j++) {

              

               if(other[i].equals(array[i]) && (status[j] == false)) {

                   I.add(array[i]);;

                   status[j] = true;

               }

           }

       }

      

       return I;

   }

} // end ResizableArrayBag

Add a comment
Know the answer?
Add Answer to:
Java Write an intersection method for the ResizableArrayBag class. The intersection of two bags is the...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • Suppose that you have several numbered billiard balls on a pool table. The smallest possible number...

    Suppose that you have several numbered billiard balls on a pool table. The smallest possible number on the ball is “1”. At each step, you remove a billiard ball from the table. If the ball removed is numbered n, you replace it with n balls randomly numbered less than n. For example, if you remove the “5” ball, you replace it with balls numbered “2”, “1”, “1”, “4”, and “3”, where numbers 2, 1, 1, 4, and 3 were randomly...

  • Load to the IDEA the remaining classes from the provided Lab02.zip file. Repeat the previous project...

    Load to the IDEA the remaining classes from the provided Lab02.zip file. Repeat the previous project inside the ArraySetWithArray class. As shown in the UML diagram below ArraySetWithArray class does not utilize ResizableArrayBag object as its instance variable, it has setOfEntries defined as an array which should be dynamically resized if more room needed (double the size). displaySet method should check if the set is empty and display appropriate message; if the set is not empty should display the number...

  • Problem 3 (List Implementation) (35 points): Write a method in the DoublyLList class that deletes the...

    Problem 3 (List Implementation) (35 points): Write a method in the DoublyLList class that deletes the first item containing a given value from a doubly linked list. The header of the method is as follows: public boolean removeValue(T aValue) where T is the general type of the objects in the list and the methods returns true if such an item is found and deleted. Include testing of the method in a main method of the DoublyLList class. ------------------------------------------------------------------------------------- /** A...

  • 5. Below i s the class deciaration for the Bag class from your text. Refer to...

    5. Below i s the class deciaration for the Bag class from your text. Refer to this hea he Ted implementation @file Bag.h #ifndet BAG #define BAG template <class ItemType> class Bag private: static const int DEFAULT BAG SIZE 6; Il current count of Bag items /I max capacity of the Bag ItemType items[DEFAULT BAG SIZE]; //array of Bag items int itemCount; int maxitems; /l Returns either the index of the element in the array items that ll contains the...

  • Implement the missing methods in java! Thanks! import java.util.Iterator; import java.util.NoSuchElementException; public class HashTableOpenAddressing<K, V> implements...

    Implement the missing methods in java! Thanks! import java.util.Iterator; import java.util.NoSuchElementException; public class HashTableOpenAddressing<K, V> implements DictionaryInterface<K, V> { private int numEntries; private static final int DEFAULT_CAPACITY = 5; private static final int MAX_CAPACITY = 10000; private TableEntry<K, V>[] table; private double loadFactor; private static final double DEFAULT_LOAD_FACTOR = 0.75; public HashTableOpenAddressing() { this(DEFAULT_CAPACITY, DEFAULT_LOAD_FACTOR); } public HashTableOpenAddressing(int initialCapacity, double loadFactorIn) { numEntries = 0; if (loadFactorIn <= 0 || initialCapacity <= 0) { throw new IllegalArgumentException("Initial capacity and load...

  • Java Programming: The following is my code: import java.util.Arrays; public class KWArrayList<E> {    // Data...

    Java Programming: The following is my code: import java.util.Arrays; public class KWArrayList<E> {    // Data fields    /** The default initial capacity */    private static final int INITIAL_CAPACITY = 10;       /** The underlying data array */    private E[] theData;       /** The current size */    private int size = 0;       /** The current capacity */    private int capacity = 0;       @SuppressWarnings("unchecked")    public KWArrayList() {        capacity...

  • I understand that it is a private method but how can I "test" it in another...

    I understand that it is a private method but how can I "test" it in another method. The red overlay means that it was not tested. kx * This method returns the position of an item zk *@param anEntry if index is found * @return -1 if no index is found private int getIndexOf (T anEntry) for (int i = 0; i < number0fEntries; i++) if (bag[i].equals (anEntry)) return i; return 1;

  • Write a complete bag class implementation using linked implementation. The linked bag class name must be...

    Write a complete bag class implementation using linked implementation. The linked bag class name must be LinkedBag and name your test program as LinkedBagDemo. Your test program should include following test conditions: 1. Get the number of items currently in the bag 2. See whether the bag is full 3. See whether the bag is empty 4. Add a given object to the bag 5. Remove an unspecified (not random) object from the bag 6. Remove an occurrence of a...

  • JAVA // TO DO: add your implementation and JavaDoc public class SmartArray<T>{    private static final...

    JAVA // TO DO: add your implementation and JavaDoc public class SmartArray<T>{    private static final int DEFAULT_CAPACITY = 2;   //default initial capacity / minimum capacity    private T[] data;   //underlying array    // ADD MORE PRIVATE MEMBERS HERE IF NEEDED!       @SuppressWarnings("unchecked")    public SmartArray(){        //constructor        //initial capacity of the array should be DEFAULT_CAPACITY    }    @SuppressWarnings("unchecked")    public SmartArray(int initialCapacity){        // constructor        // set the initial capacity of...

  • Java. Must not use Java API java.util.Stack /** A class of stacks whose entries are stored in an ...

    Java. Must not use Java API java.util.Stack /** A class of stacks whose entries are stored in an array. Implement all methods in ArrayStack class using resizable array strategy, i.e. usedoubleArray() Must throw StackException during exception events in methods:    peek(), pop(), ArrayStack(int initialCapacity) Do not change or add data fields Do not add new methods */ import java.util.Arrays; public class Arraystack«Т> implements Stack!nterface«T> private TI stack;// Array of stack entries private int topIndex; /7 Index of top entry private static...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT